我会定期删除会话文件中的tmp。显然,由于会话数量巨大,我对会话进行了错误管理。你如何管理你的会话,而不是他们的数量变得太大?如果存在新会话,您如何确保不进行新会话?
我使用的命令,不确定它们是如何工作的:
ob_start ();
session_save_path("/tmp/");
session_start();
ob_end_flush ();
答案 0 :(得分:2)
在正确配置的PHP安装中,您不需要手动清理会话数据。您应该阅读sessions in the manual上的页面并查看部分configuration directives。可能性是您已将gc_maxlifetime设置为非常高的值,并且它们尚未达到“到期”限制以自动收集。您应该检查您的应用程序,以确保他们没有在运行时为会话设置设置奇怪的值(使用ini_set()
)。
PHP有一个在session_start()
上运行的内部算法,用于决定是否应该执行垃圾清理运行并删除旧的会话文件。出于性能原因,我认为每次运行的默认机会是1%,因此平均每100次session_start()
次调用就会启动一次垃圾收集例程。如果您发现这还不够,可以将gc_divisor设置提高到高于1的值。
答案 1 :(得分:0)
PHP应该会在旧会话文件超过几个小时后自动删除它们。您的session.gc_probability,session.gc_divisor和session.gc_maxlifetime设置可能包含奇数值。查看sessions runtime configuration section of the PHP manual以获取更多信息及其默认值。
这不是你可以(或应该)试图自己管理的东西。
如果您仍然有太多文件,请查看使用session.save_path中的高级设置来创建会话的子目录。这样可以加快文件系统对单个文件的访问速度。