作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有 apache 作为后端服务器,它运行 php 脚本和 nginx 作为反向代理服务器来处理静态内容。一个 php 脚本,它给了我一些进程的 ID,然后执行这个过程(相当长)。我只需要将那个进程的 ID 传递给浏览器。
// ...
ob_start();
echo json_encode($arResult); // only this data should be passed to browser
$contentLength = ob_get_length();
header('Connection: close');
header('Content-Length: ' . $contentLength);
ob_end_flush();
ob_flush();
flush();
// then performed a long process
(我用另一个 ajax 脚本检查进程的状态)
这仅在 apache 下工作正常。但是当 apache 落后于 nginx 时,我遇到了问题。在这种情况下,只有当过程完全完成时,我才会得到响应。
nginx 设置:
server {
#...
proxy_set_header Connection close;
proxy_pass_header Content-Length;
#...
}
但我仍然在 FireBug 中保持连接。
如何让nginx立即给出apache的响应?
希望问题清楚。
谢谢。
最佳答案
你试过在 nginx 中关闭 proxy_buffering 吗?不确定它会关闭连接,但至少响应会按原样传输给客户端。 :-)
关于php - Nginx 作为长轮询时的反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4766141/
我是一名优秀的程序员,十分优秀!