【发布时间】:2020-08-28 02:23:36
【问题描述】:
我一直在阅读有关如何运行 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 脚本。错误说:
flock: 执行失败 cd: 没有那个文件或目录 无法打开输入文件:my-script.php
我在这里缺少什么吗? flock() 是否仅适用于 .sh 脚本?如果是这样,我如何调整我的 PHP 脚本以使用 flock()?
【问题讨论】:
-
你试过把你的命令放在
"吗?喜欢flock -n /tmp/my-cript.lockfile "php /path/to/script.php" -
实际上,单独运行这个命令:
php /var/www/html/wp-content/plugins/my-plugin/my-script.php它什么也没做。我运行PHP脚本的方式如下:cd /var/www/html/wp-content/plugins/my-plugin/; php my-script.php- 但是当我尝试将它与flock和引号结合起来时,它会说:flock:执行失败......没有这样的文件或目录 - 我已经修改了一点主帖,这样就更清楚了。