设置php sessionclean cron作业在chroot环境中运行

时间:2016-04-22 03:37:36

标签: php cron

我有多个需要运行sessionclean cronjob的PHP-FPM chroot站点。我在这里找到了这个要点:

https://gist.github.com/zerthimon/4e15f4d04c888dee0410

对/etc/cron.d/php文件进行了编辑

*/30 * * * *     root   [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/www/pools ] && find /var/www/pools -path "*/var/lib/php5" -exec /usr/lib/php5/sessionclean {} $(/usr/lib/php5/maxlifetime) \;

首先要注意的是我正在运行php7,所以php5变成了php。第二个注意事项是我在/ usr / lib / php中没有maxlifetime,所以我试图在没有它的情况下运行它。这是我的修改不起作用:

 [ -x /usr/lib/php/sessionclean ] && [ -d /var/www/html ] && find /var/www/html -path "*/var/lib/php" -exec /usr/lib/php/sessionclean {} \;

有人可以告诉我如何修改上面的内容来解析每个/ var / www / html / [chroot] / var / lib / php / sessions目录以删除当前没有使用的会话文件吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

我想出了一个解决方法。这不会直接修改/etc/cron.d/php文件,但确实为想要清除chrooted php-fpm环境中不再使用的会话文件的人提供了解决方案。

一个小小的脚本每4小时在crontab中运行一次。

#!/bin/bash

cd /var/www/html
for D in *; do
find /var/www/html/"$D"/var/lib/php/sessions/sess_* -mmin +240 -delete;
done

这将删除在最近4小时内未修改的所有会话文件,这些文件存储在每个chroot环境中。