通过 Cron 显示 PHP 脚本 运行 的次数
Show Number of Times a PHP Script is Running via Cron
我有一个 php 脚本,可以通过 cron 在服务器上 运行 执行作业。基本上 cron 每分钟 运行 就像:
- php /path/to/my/script/script.php
这个脚本可以运行多次,继续运行一段时间
我想做的是找到一种方法来读取此用户的进程 运行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_
开头的文件数(另一个 grep
以 wc -l
管道传输)。
阅读过程取决于 OS 您使用的并且不会相同。相反,每次您的脚本 运行,您都可以将详细信息写入数据库。喜欢;
process_name - run_time - is_completed
在脚本运行之前,您需要检查进程table中是否没有完成超过10个进程。您还会有日志记录
如果你想让它用 bash 脚本检查它,请尝试将 ps ax
与 grep
结合使用:
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答案结合起来,您将得到完整的解决方案。
我有一个 php 脚本,可以通过 cron 在服务器上 运行 执行作业。基本上 cron 每分钟 运行 就像:
- php /path/to/my/script/script.php
这个脚本可以运行多次,继续运行一段时间
我想做的是找到一种方法来读取此用户的进程 运行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_
开头的文件数(另一个 grep
以 wc -l
管道传输)。
阅读过程取决于 OS 您使用的并且不会相同。相反,每次您的脚本 运行,您都可以将详细信息写入数据库。喜欢;
process_name - run_time - is_completed
在脚本运行之前,您需要检查进程table中是否没有完成超过10个进程。您还会有日志记录
如果你想让它用 bash 脚本检查它,请尝试将 ps ax
与 grep
结合使用:
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答案结合起来,您将得到完整的解决方案。