检查进程中运行的 PHP 脚本


Checking PHP script running in process

ps ax | grep -i 'php complete.php'
<?php
exec("ps ax | grep -i 'php complete.php'", $pids);
if(!empty($pids)) {
die("already running");
}

我去检查我的 ps ax,但没有看到完整的.php,我去检查了一个文件夹,如果完成.php它会输出一些东西正在运行,但没有输出。

它给了我一个误报。 如何检查脚本是否完成.php当前正在运行。

原因是因为我希望它同步运行,并且我有一个无限循环执行完成.php每 2 分钟一次,就像一个 cron 作业。

你只会看到 php 进程正在运行。我查看 php 进程运行的方法是为 php 二进制文件添加别名并使用它运行它。

ln -s/usr/bin/php longrunningphp

longrunningphp/path/to/your/script

然后检查 ps ax | grep longrunphp

我遇到了同样的问题。在控制台中运行时,您将获得结果,但是当在 PHP 中使用相同的命令时,不会返回任何内容。问题出在 PHP 允许的终端宽度上。简单的解决方案是增加它。例:

exec("export COLUMNS=1000; ps ax | grep -i 'php complete.php'", $pids);
COLUMNS
    Used by the select command to determine the terminal width when printing 
    selection lists. Automatically set upon receipt of a SIGWINCH.