gpt4 book ai didi

php - Nginx 作为长轮询时的反向代理

转载 作者:可可西里 更新时间:2023-11-01 13:21:52 29 4
gpt4 key购买 nike

我有 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com