通过cronjob运行PHP脚本,避免重复的PHP进程(羊群)



我一直在阅读有关如何运行 cronjob 并避免重复执行 cronjob 的文章。这意味着,如果 cronjob 已经在运行,请不要运行它的另一个实例。如果 cronjob 未运行,请根据 cronjob 计划再次开始运行进程。

flock()是这样做的解决方案,如下所述: https://stackoverflow.com/a/33416116 使用 flock 设置 cronjob 的方法如下:

* * * * * flock -n /tmp/script.lockfile /usr/local/bin/script

但是,当我尝试使用 flock 在 cronjob 中设置我的 PHP 脚本时,它不起作用。我设置如下:

*/10 * * * * flock -n /tmp/my-script.lockfile cd /var/www/html/wp-content/plugins/my-plugin/; php my-script.php

我尝试直接在控制台中测试它,而不使用 cronjob,虽然它创建了my-script.lockfile文件,但它不会运行my-script.php脚本。错误说:

羊群:无法执行 CD:没有这样的文件或目录 无法打开输入文件:我的脚本.php

我在这里缺少什么吗?flock()仅适用于.sh脚本吗?如果是这样,我如何调整我的 PHP 脚本以与flock()一起使用?

看起来如果你想使用更复杂的命令,你必须用-c前缀并换入"

*/10 * * * * flock -n /tmp/my-script.lockfile -c "cd /var/www/html/wp-content/plugins/my-plugin/; php my-script.php"

最新更新