PHP / Cron限制并发运行脚本数

时间:2011-02-15 02:13:28

标签: php cron

我有一个用PHP编写的脚本,由cron作业启动。这是一个长时间运行的脚本,通常cron在最后一个实例完成之前启动另一个实例。没关系。我允许在任何给定时间运行此脚本的3个实例。

我将脚本限制为3个实例,此代码位于脚本顶部:

exec('ps -A | grep nameofmyscript', $results);
if (count($results) > 4) {
    echo "Already Running\n"
    die(0);
}

它有效,但我正在寻找更好的方法。几周前,当我重命名脚本时,这种方法适用于我,并且忘记更改那行代码。当脚本被命名为类似于已经运行的进程时,它也会失败。

2 个答案:

答案 0 :(得分:2)

使用PHP,您可以在特定于cron作业的目录中创建一个随机命名的锁定文件。在让PHP脚本继续之前,请检查目录中存在的锁定文件的数量。这可能不是最好的解决方案。

答案 1 :(得分:1)

您可以自动设置名称...

exec('ps -A | grep ' . escapeshellarg(basename(__FILE__)) , $results);
if (count($results) > 4) {
    echo "Already Running\n"
    die(0);
}