1

最初我有一个每天执行一个 php 文件的 cronjob。显然 php 文件很重,cronjob 没有执行它。

我选择创建一个可以休眠 24 小时并且运行良好的守护进程,但我相信服务器会在一段时间后由于其不活动而终止此进程。我有一个每 5 分钟运行一次的 DEAMON,这个永远不会停止,但等待 24 小时的那个总是停止工作。

我的计划是创建一个 cronjob 来检查进程是否正在运行,如果不执行它:

exec("ps auxwww|grep _DAEMON.php|grep -v grep", $output);
if(empty($output)){
   exec("php -f _DAEMON.php");
}

由于某种原因,这不起作用,exec("ps auxwww|grep _DAEMON.php|grep -v grep", $output)如果脚本正在运行,它确实可以很好地检测到,所以exec("php -f _DAEMON.php")那个不起作用。

我试图从print_r$status 得到exec("php -f _DAEMON.php",$status);,这就是我得到的:

Array
(
    [0] => X-Powered-By: PHP/5.2.17
    [1] => Content-type: text/html
    [2] => 
)

我尝试过exec("php-cli -f _DAEMON.php")并且工作得很好,但是由于我正在调用的文件是一个守护进程,php-cli使它成为我原始文件的一部分(include()我相信某种形式)并冻结了我的原始文件,它确实为守护进程创建了一个单独的新进程,但是原始文件永远加载。

有任何想法吗?谢谢!

4

0 回答 0