如何配置PHP以自动定期删除会话数据/ sess_文件?

时间:2020-02-14 15:44:29

标签: php session configuration garbage-collection php-7

PHP会话数据存储在服务器端的sess_{$hash}设置的session.save_path设置目录中的php.ini文件中。

如果我的理解是正确的,则应在定义的时间段后删除这些文件。这次如何获得以及如何设定?我尝试设置session.cache_expiresession.gc_maxlifetime。例如。我将session.cache_expire设置为2(分钟),但是两分钟后文件仍然存在。我还将session.gc_maxlifetime设置为120(秒)。但这也不起作用。

如何配置PHP以在定义的时间段后删除sess_*文件?

1 个答案:

答案 0 :(得分:2)

session.gc_maxlifetime定义了何时将会话数据标记为垃圾收集(不一定是在删除时)。该数据的实际删除取决于许多变量。最突出的是session.gc_probabilitysession.gc_divisor除数上的概率确定会话初始化过程将调用垃圾收集器清理标记垃圾的机会。默认情况下,它们分别为1100表示垃圾收集器清理的可能性为1%)。

这是PHP垃圾收集会话数据的默认机制。但是,在某些系统(最著名的Ubuntu )上,默认会话GC被外部清除机制所取代,该机制作为cron作业实施,该作业定期运行以根据stat调用和{ {1}}。

随着session.gc_maxlifetime呼叫数量的增加,陈旧会话数据被定期清理的可能性增加,您在繁忙的站点上往往不会注意到这些副作用。但是,在人流量低的站点(即您的开发环境)上,这种可能性下降的幅度足够大,以至于您可能会发现过时的会话数据徘徊了一段时间。这通常是无关紧要的。只要您要删除会话Cookie,并在需要删除会话时定期使用session_start(),就无济于事了。