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

显示PHP脚本通过Cron运行的次数,php,linux,process,cron,Php,Linux,Process,Cron,我有一个php脚本,它通过cron在服务器上运行作业。基本上,cron每分钟运行一次,如下所示: php/path/to/my/script/script.php 此脚本可以运行多次,并可以继续运行一段时间 我想做的是找到一种方法来读取为这个用户运行的进程,并计算script.php运行了多少次。在cron实际运行之前。基本上,如果有10个脚本实例在运行,那么在少于10个脚本实例运行之前,不会启动其他脚本实例。如果有10个正在运行,我需要确保它不会启动 希望这是有道理的 首先,应

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

        • php/path/to/my/script/script.php
此脚本可以运行多次,并可以继续运行一段时间

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


希望这是有道理的

首先,应该将对PHP脚本的调用放在Shell脚本中

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

如果计数低于定义的限制(
10
),请运行PHP程序的新实例

现在,关于如何计算当前正在运行的实例,您可以使用
ps
命令,通过
grep
命令(过滤进程)和
wc-l
命令(进行计算)来实现这一点

或者,您可以在运行新实例之前创建一个唯一的空文件,如
/tmp/php\u script
,并在php脚本结束时将其删除


计算实例数相当于计算
/tmp
中的文件数,从
php\u脚本开始(另一个
grep
wc-l
管道相连)。

读取过程取决于您使用的操作系统,而不是相同的操作系统。相反,每次脚本运行时,都可以将详细信息写入数据库。喜欢

process_name  - run_time - is_completed 

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

如果您希望它使用bash脚本进行检查,请尝试将
ps ax
grep
组合:

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的答案结合起来,你将得到完整的答案。

多亏了maxime.bochon和Jan J。。。这很好。感谢@Jan J和@maxime.bochon为任何有类似问题的人提供的帮助,我所做的是:
totalatm=
ps ax | grep'php/home/xxxx/public_html/cron/xxxx.php'| wc-l`if[“$totalatm”-le 10];然后php/home/xxxxx/public_html/cron/xxxxx.php else回显“无事可做”;fi`xxx只是注释了我自己的路径和文件名。。。你可以忽略这一点