检查正在运行的PHP脚本

时间:2014-11-24 17:19:48

标签: php

ps ax | grep -i 'php complete.php'

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

我去检查我的ps斧,但是没有看到complete.php,我去检查一个文件夹,如果complete.php正在运行,它将输出一些内容,但没有输出。

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

原因是因为我希望它同步运行而且我有一个无限循环执行complete.php每2分钟就像一个cron工作。

2 个答案:

答案 0 :(得分:0)

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

ln -s / usr / bin / php longrunningphp

longrunningphp / path / to / your / script

然后用ps ax |检查grep longrunningphp

答案 1 :(得分:0)

I had the same problem.在控制台中运行时,您将获得结果,但是当在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.