首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AJAX脚本直到后台程序运行到exec()结束时才会响应

问AJAX脚本直到后台程序运行到exec()结束时才会响应
EN

Stack Overflow用户
提问于 2016-05-01 15:42:29
回答 1查看 206关注 0票数 1

我使用exec()运行了一个后台PHP程序,如下所示:

代码语言:javascript
复制
exec('/usr/bin/php bgScript.php "arg1" "arg2" > /dev/null 2>&1 &');

它可以工作,程序在后台运行。

问题

我已经启用了输出缓冲,并希望保持这种状态。

我的剧本是这样的:

代码语言:javascript
复制
exec('/usr/bin/php bgScript.php "arg1" "arg2" > /dev/null 2>&1 &');
echo json_encode(array(
  "status" => "started"
));

当向上面的文件发出AJAX请求时,进程将启动并处于后台。我假设这是因为,对服务器的进一步请求将返回数据,并且不会为前面的AJAX脚本完成wait。

但是,问题是,在后台进程完成之前,不会输出JSON数据。

由于程序是在后台运行的,所以不应该在不等待exec()结束的情况下输出JSON数据吗?我不知道如何在技术上这样说(请原谅我):为什么输出缓冲区会一直持续到exec()结束?

在程序在后台启动并关闭AJAX脚本和浏览器之间的连接之后,如何使脚本输出JSON数据?

EN

回答 1

Stack Overflow用户

发布于 2016-05-01 15:55:42

如果stdio未被重定向,则该命令不会在后台运行。从正式文件

注意:如果一个程序是用这个函数启动的,为了让它在后台继续运行,程序的输出必须重定向到一个文件或另一个输出流。如果不这样做,将导致PHP挂起,直到程序执行结束。

在类似于Unix的系统中,有几种方法可以使用command >/dev/null &在windows上运行命令,您可以使用start command。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36968552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档