我正在使用 cronjob 运行每 1 分钟执行一次的 php 脚本
我还需要确保只有副本正在运行,因此如果此 php 脚本在 2 分钟后仍在运行,则 cronjob 不应运行另一个版本。
目前我有 2 个选项,我想看看您的反馈,如果您还有更多选项
选项1:在php脚本启动时创建一个tmp文件,并在php脚本完成时将其删除(并检查文件是否存在)--->这个选项对我来说的问题是,如果我的php脚本因任何原因崩溃,它不会再次运行(tmp文件不会被删除)
选项 2:运行如下所示的 bash 脚本来控制 php 脚本执行 ---> 很好,但正在寻找可以在 php 中完成的操作
#!/bin/bash
function rerun {
BASEDIR=$(dirname $0)
echo $BASEDIR/$1
if ps -ef | grep -v grep | grep $1; then
echo "Running"
exit 0
else
echo "NOT running";
/usr/local/bin/php $BASEDIR/$1 &
exit $?
fi
}
rerun myphpscript.php
PS:我刚刚在http://www.php.net/manual/en/class.mutex.php看到“互斥类”,但不确定它是否稳定并且有人尝试过。