我有一个用cron作业启动的用PHP编写的脚本。这是一个长时间运行的脚本,并且在最后一次完成之前,通常cron会踢出另一个实例。没关系。我允许在任何给定时间运行此脚本的3个实例。PHP/Cron限制并发运行脚本的数量
我限制脚本使用此代码3个实例在脚本的顶部:
exec('ps -A | grep nameofmyscript', $results);
if (count($results) > 4) {
echo "Already Running\n"
die(0);
}
它的工作原理,但我正在寻找一种更好的方式。这种方法在我重新编写脚本几周之前就对我产生了影响,并忘记更改该代码行。当脚本命名与某个已经运行的进程类似时,它也会失败。
这是比我目前的解决方案更好的方法。我可能必须使用basename(__ FILE__),因为完整路径不包含在ps输出中。但是它仍然不能防止与系统上运行的类似命名的脚本发生冲突。 – mellowsoon 2011-02-15 02:35:04
@mellowsoon啊是的,`basename()`会更好,我忘了:P。如果你向我展示`ps -A`的输出,我会给你写一个正则表达式,它应该完美地匹配你的PHP文件。 – alex 2011-02-15 02:43:38