我正在尝试使用Zend_Session_Handler_DbTable将会话数据保存到数据库,但据我所知,过期的会话永远不会从数据库中删除。
我可以看到运行的cron作业(ubuntu)删除了基于文件的会话,但是我找不到gc如何处理在db中保存的会话。
答案 0 :(得分:6)
Zend_Session_SaveHandler_DbTable
类有一个名为gc
的垃圾收集方法,当你调用Zend_Session::setSaveHandler()
时,它会通过session_set_save_handler
提供给PHP。
应根据php.ini值session.gc_probability
和gc
定期调用session.gc_divisor
函数。确保将这些值设置为可能导致垃圾收集在某个时刻运行的内容。
还要确保在创建DbTable保存处理程序时指定modifiedColumn
和lifetimeColumn
选项,因为默认的gc
函数使用这些列来确定会话表中的哪些行是旧的并且应删除。