Kohana 3.2会话太快到期了。我当前的配置是:
return array(
'native' => array(
'name' => 'kohanasession',
'lifetime' => 0,
),
);使用lifetime => 0意味着会话将在浏览器关闭时结束。但是,1小时后,会话到期。
我还尝试使用不同的生命周期(例如36000 => 10小时),但还是失败了。
如果我使用一个很小的会话生命周期(例如10秒),那么过期可以完美地工作。据我所知,如果我想让一个会话的生命周期超过1小时,它就不会工作。
最后,我们用于php.ini的相关配置
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我真的迷失在这里了。这应该很容易解决,但我就是做不出来。
发布于 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_probability或session.gc_divisor都没有意义。
相反,在将会话数据保存到memcached服务器时,memcache保存处理程序会自动设置过期时间(类似于Memcache::set的expire参数)。处理程序从session.gc_maxlifetime设置中读取要使用的过期时间。因此,当您使用memcache session save处理程序时,这是惟一真正重要的GC设置。
https://stackoverflow.com/questions/10748670
复制相似问题