php在后台运行并在完成后退出

时间:2012-01-02 07:42:11

标签: php multithreading background exec exit

$escaped_check = escapeshellcmd("/usr/bin/php -f /opt/status/check.php " . $_SERVER['REMOTE_ADDR'] . " >> /dev/null 2>&1 &"); shell_exec($escaped_check);

我试图在后台执行上面的代码是为了非阻塞线程,但我不确定如何在作业完成时退出check.php。

2 个答案:

答案 0 :(得分:1)

你可以使用popen而不是shell_exec。

然后你可以通过proc_terminate终止它

或者您可以通过调用proc_get_status来获取进程ID。

使用PID,您也可以终止进程。

我希望这会有所帮助。

答案 1 :(得分:0)

PHP脚本(你的check.php)应该在后台运行后自动终止。 您可以尝试在PHP脚本(check.php)末尾使用exit()或die()来确保脚本跳出来。

您还可以使用以下命令获取$ pid。例如,23456。“echo $!”部分发送进程ID。

$pid = shell_exec('php /path/to/script/cli_test.php argument1 > /dev/null 2>&1 & echo $!') 

然后在终端中,使用ps命令检查它是否仍在后台运行。

ps 23456