我有这个脚本在后台运行另一个脚本,而无需等待它完成。
我的脚本.php:
$cmd = "nohup php script2.php > /dev/null 2>&1 &";
exec($cmd);
我的 script2.php:
sleep(10);
mail("me@mail.com","test","ok");
如果我在命令行中运行它,它工作正常:呼叫立即结束,10 秒后我在收件箱中收到一封新邮件。
但是,如果我用http://myserver/script.php调用我的脚本,我什么也收不到。
请注意,使用:
$cmd = "php script2.php > /dev/null 2>&1";
适用于两种调用方法。所以http调用和nohup的使用有问题。
我还尝试了 passthru 和 shell_exec 而不是 exec ,结果相同。
也试过这个以防万一,但无论如何它都不起作用。