PHP扩展垃圾收集器

时间:2014-05-09 11:07:41

标签: php garbage

我需要扩展php的垃圾收集器,所以当它删除一个旧的会话时,它也应该删除一些数据库条目。我尝试过使用SessionHandlerInterface的实现,但它不起作用。我应该在哪里添加我的代码?是否可能或这些实现与标准的session_destroy调用有关,而不是垃圾收集器销毁?

2 个答案:

答案 0 :(得分:1)

函数session_set_save_handler允许您在许多会话事件(打开,关闭,读取,写入,销毁和gc)上附加回调。在您的情况下,destroy和/或gc可能会这样做。

答案 1 :(得分:0)

根据documentation

  

销毁会话。由session_regenerate_id()(使用$ destroy = TRUE),session_destroy()以及session_decode()失败时调用。

因此,只有在脚本期间显式销毁会话或出现错误时,才会调用使用SessionHandlerInterface定义的销毁函数。

要销毁旧会话,您必须使用gc的{​​{1}}参数,并删除session_set_save_handler的所有条目。


编辑:

请注意,在查询开始时调用datetime < currenttime - $lifetime的概率只有1%。这意味着它的执行在很大程度上取决于您在服务器上拥有多少流量。当您独自在测试服务器上工作时,您无法轻松执行它。