繁体   English   中英

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

[英]Show Number of Times a PHP Script is Running via Cron

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

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

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

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

希望这是有道理的。 ;)

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

process_name  - run_time - is_completed 

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

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

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

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

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

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

然后,对实例进行计数就等于对/tmpphp_script_ (另一个用wc -l php_script_ grep )开头的文件数进行计数。

如果要使用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答案,您将获得完整的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM