$escaped_check = escapeshellcmd("/usr/bin/php -f /opt/status/check.php " . $_SERVER['REMOTE_ADDR'] . " >> /dev/null 2>&1 &");
shell_exec($escaped_check);
我试图在后台执行上面的代码是为了非阻塞线程,但我不确定如何在作业完成时退出check.php。
答案 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