【发布时间】:2013-12-01 13:55:12
【问题描述】:
有没有办法确保默认的 PHP SESSION 垃圾收集器在销毁过期会话时调用某些函数?
根据我的经验,默认的 PHP 垃圾收集器不会在销毁会话时调用任何回调函数。
我猜,唯一的方法是为所有 5 个操作定义自定义会话处理程序 - 打开、关闭、销毁、..? (我的冗余代码)
原因是,我需要为活动会话调整计数器。
完美的解决方案是例如如果可以注册类似 session_register_destroy(function) 的东西 - 但我不确定这是否可能。
谢谢。
【问题讨论】:
-
获取活动会话数怎么样? stackoverflow.com/a/17259650/368406
-
如果您使用会话文件处理程序,那么计算活动会话将涉及枚举会话保存路径目录。这将是一个相对较慢的操作,因为它会进入磁盘,并且根据活动会话的数量,它可能会相当卡顿。你有没有想过这个?
-
是的,我正在使用标准文件存储。我想避免扫描会话保存路径(例如使用 glob(.)),因为 1/ 这是昂贵的操作 2/ 我必须只计算授予人类用户的会话,因为机器人(通过 http 客户端签名识别)总是被免费授予索引站点。因此,简单的目录扫描不是一种选择。所以看起来实现简单的会话计数器并不是那么简单,对吧? :-)
标签: php session garbage-collection destroy