【发布时间】:2014-11-24 20:47:34
【问题描述】:
5877 pts/1 S 0:00 php cron_run.php
5879 pts/1 S 0:00 sh -c /usr/bin/php /srv/www/videofix.d.com/public_html/v/complete.php
5880 pts/1 S 0:00 /usr/bin/php /srv/www/videofix.d.com/public_html/v/complete.php
5884 pts/1 S 0:00 sh -c php 2.php 4584.2
5885 pts/1 S 0:01 php 2.php 4584.2
我尝试 ps ax 并看到我的 cron_run.php
执行complete.php
但似乎有 2 个实例正在运行。
1 is with sh -c
1 is without
是 2 个实例还是实际上是 1 个实例。
How do i modify my code so it only run one instance at a time
这是我的 cron 运行文件
<?php
while(1<2)
{
//run every 2 minutes
shell_exec("/usr/bin/php /srv/www/videofix.d.com/public_html/v/complete.php");
sleep(120);
}
?>
在无限循环中运行,但没有 sh -c,所以只有 1 个 /usr/bin
感谢您的帮助
【问题讨论】:
-
因为
sh调用/usr/bin/php你看到两个。如果您运行ps axf,您可以更清楚地看到发生了什么:所以没有真正的问题:有 1 个 complete.php 作业正在运行。为什么叫shell_exec而不是include呢? -
sh -c php不是 PHP 本身。它是您的shell_exec()调用创建的 (SH)ell。 -
另外,我会考虑查看
complete.php的作用,以及是否可以将其移植到 shell 脚本。 -
如果你可以调整使用crontab而不是php,请这样做。