显示PHP脚本通过Cron运行的次数

时间:2015-08-14 07:24:08

标签: php linux process cron

我有一个php脚本,可以通过cron在服务器上运行作业。基本上cron每分钟运行一次,如:

        • php /path/to/my/script/script.php

此脚本可以多次运行,并继续运行一段时间。

我正在尝试做的是找到一种方法来读取为该用户运行的进程,并计算script.php运行的次数。在cron实际运行之前。基本上这样,如果脚本有10个实例在运行,那么在运行少于10个之前,它的其他实例都不会启动。如果有10个正在运行,我需要确保它不会启动。

希望这是有道理的。 ;)

3 个答案:

答案 0 :(得分:2)

阅读过程取决于您使用的操作系统,并且不一样。相反,每次运行脚本时,都可以向数据库写入详细信息。等;

process_name  - run_time - is_completed 

在脚本运行之前,您需要检查进程表中是否有超过10个已完成的进程。您还将拥有日志记录

答案 1 :(得分:0)

首先,您应该在Shell脚本中调用PHP脚本。

在此脚本中,第一步是计算PHP程序的当前运行实例。

如果计数低于定义的限制(在您的情况下为10),请运行PHP程序的新实例。

现在关于如何计算当前运行的实例,您可以使用ps命令管道,使用grep命令(过滤进程),然后执行wc -l命令(到做计数)。

或者您可以在运行新实例之前创建一个唯一的空文件,例如/tmp/php_script_<timestamp>,并在PHP脚本结束时将其删除。

计算实例将等同于计算/tmp中以php_script_开头的文件数量(另一个grep管道wc -l)。

答案 2 :(得分:0)

如果您希望使用bash脚本进行检查,请尝试将ps axgrep合并:

ps ax | grep 'php /home/janj/www/test.php'

这将返回类似于此的内容:

17857 ?        Ss     0:00 /bin/sh -c php /home/janj/www/test.php
17858 ?        S      0:00 php /home/janj/www/test.php
17897 ?        Ss     0:00 /bin/sh -c php /home/janj/www/test.php
17898 ?        S      0:00 php /home/janj/www/test.php
17903 pts/7    S+     0:00 grep --color=auto php /home/janj/www/test.php

将它与 maxime.bochon 答案结合起来,您将获得完整的解决方案。