首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kohana 3.2会话太快过期,较短的过期时间如预期

Kohana 3.2会话太快过期,较短的过期时间如预期
EN

Stack Overflow用户
提问于 2012-05-25 12:59:33
回答 1查看 3K关注 0票数 4

Kohana 3.2会话太快到期了。我当前的配置是:

代码语言:javascript
复制
return array(
'native' => array(
    'name' => 'kohanasession',
    'lifetime' => 0,       
 ),
);

使用lifetime => 0意味着会话将在浏览器关闭时结束。但是,1小时后,会话到期。

我还尝试使用不同的生命周期(例如36000 => 10小时),但还是失败了。

如果我使用一个很小的会话生命周期(例如10秒),那么过期可以完美地工作。据我所知,如果我想让一个会话的生命周期超过1小时,它就不会工作。

最后,我们用于php.ini的相关配置

代码语言:javascript
复制
session.save_handler = memcache
session.save_path="tcp://127.0.0.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
session.cache_limiter = nocache
session.gc_probability = 0

我真的迷失在这里了。这应该很容易解决,但我就是做不出来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-25 13:23:05

lifetime => 0参数可能只影响会话cookie的生存期。

可能发生的情况是,虽然cookie工作正常,但您在服务器端丢弃了用户的会话数据。PHP的会话垃圾收集在默认情况下有点奇怪:它在空闲时间超过24分钟后将会话标记为过期,并且每个请求都有1%的机会清理所有过期的会话。

您可以增加PHP设置session.gc_maxlifetime,或者将session.gc_probability设置为零,以完全禁用自动会话垃圾收集。

当然,也有可能您的memcached服务器被配置为在一段时间后丢弃数据。

更新:对于普通的会话处理程序,将session.gc_probability设置为零将是完全禁用自动清理的方法。但是,memcache会话处理程序实际上已经不执行垃圾收集(它的gc回调什么也不做)。因此,使用保存处理程序更改session.gc_probabilitysession.gc_divisor都没有意义。

相反,在将会话数据保存到memcached服务器时,memcache保存处理程序会自动设置过期时间(类似于Memcache::setexpire参数)。处理程序从session.gc_maxlifetime设置中读取要使用的过期时间。因此,当您使用memcache session save处理程序时,这是惟一真正重要的GC设置。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10748670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档