为什么Debian使用cron作业清理php会话,而不是使用php的内置垃圾回收器?

Debian和衍生产品(Ubuntu)不使用php会话垃圾回收器

session.gc_probability = 0 

而是使用cron /etc/cron.d/php5

 09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete 

为什么Debianselect这样做?

因为Debian在/var/lib/php5 (1733,owner root,group root)上设置了非常严格的权限来防止PHP会话被劫持。 不幸的是,这也阻止了本地PHP会话垃圾回收器的工作,因为它不能在那里看到会话文件。 cron作业以root身份运行,它具有足够的访问权限来查看和清理会话文件。

编辑 :支持文档:行为是为了响应错误#267720而build立的。 (以前在股票php.ini文件中有关于此的评论,但是我现在在我的基于wheezy的PHP安装中看不到它们。)

在stream量较低的站点上可能会更可靠一些(如果你每天只有几百次点击,GC每隔一千次就会发生一次,会话可能会比他们应该更长),我想这可能是一个如果你有很多的会话,那么服务器上的内容要比原生GC要less一些。