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

Show Number of Times a PHP Script is Running via Cron

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

这个脚本可以运行多次,继续运行一段时间

我想做的是找到一种方法来读取此用户的进程 运行ning,并计算 script.php 是 运行ning 的次数。在 cron 之前实际上是 运行。基本上,如果脚本 运行ning 有 10 个实例,则在少于 10 个 运行ning 之前,它的其他实例将不会启动。如果有 10 运行ning.

,我需要确保它不会启动

希望这是有道理的。 ;)

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

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

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

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

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

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

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

process_name  - run_time - is_completed 

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

如果你想让它用 bash 脚本检查它,请尝试将 ps axgrep 结合使用:

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

这将 return 类似于此:

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