【发布时间】:2015-04-08 12:51:56
【问题描述】:
我有这个脚本在后台运行另一个脚本,而无需等待它完成。
我的脚本.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,结果相同。
为了以防万一,还尝试了this,但无论如何都没有用。
【问题讨论】:
-
而不是/dev/null,你能把输出重定向到一个临时日志文件,看看日志文件中是否列出了任何错误?还要检查您的 /var/log/httpd/error_log 和 /var/log/httpd/access_log 文件是否有错误。
-
thnx Tim:这是找到部分问题的线索......我非常专注于脚本是否正常工作,以至于我在我的开发服务器上进行了虚假测试。
-
我电脑上的问题是这样的,但我现在可以处理它。 stackoverflow.com/questions/29112446/…
-
@Gorka 您是否找到了使
nohup使用 PHP 处理 HTTP 调用的解决方案?你的解决方案是什么?谢谢!