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.