如果正在进行流式下载,Nginx PHP-FPM将不提供请求
在安装中,我们在Nginx上部署了两个应用程序,一个是PHP,另一个是Python 基于Python的应用程序是使用uwsgi部署在Nginx上的restapi应用程序。一个API用于CSV下载。CSV文件的大小大多大于100 MB。因此,API提供了流式下载 使用PHP fpm托管在同一Nginx上的PHP应用程序使用RESTAPI。在CSV下载的情况下,PHP应用程序向API发出请求,并提供流式下载以进一步流式下载到用户/浏览器。这东西很好用 现在的问题是,当从PHP应用程序下载正在进行的请求并试图访问PHP应用程序的其他页面时,它不会加载(响应)页面。如果我取消下载请求,它会立即加载/响应页面 在API中,如果下载流正在进行,其他API请求响应将正常工作,因此python应用程序不会出现问题 但对于PHP应用程序,它不起作用。 尝试了不同的选项,如在Nginx中更改worker\u进程、worker\u连接。还可以在php fpm中配置池管理器。没有成功 为了从PHP应用程序请求RESTAPI,我使用了PHP curl,即curl如果正在进行流式下载,Nginx PHP-FPM将不提供请求,php,curl,nginx,fastcgi,Php,Curl,Nginx,Fastcgi,在安装中,我们在Nginx上部署了两个应用程序,一个是PHP,另一个是Python 基于Python的应用程序是使用uwsgi部署在Nginx上的restapi应用程序。一个API用于CSV下载。CSV文件的大小大多大于100 MB。因此,API提供了流式下载 使用PHP fpm托管在同一Nginx上的PHP应用程序使用RESTAPI。在CSV下载的情况下,PHP应用程序向API发出请求,并提供流式下载以进一步流式下载到用户/浏览器。这东西很好用 现在的问题是,当从PHP应用程序下载正在进行的请
请帮忙。问题终于解决了,主要是会话锁问题 您需要有回调函数来处理会话关闭以及写入接收到的数据 回调函数:
function curlWriteHandler($ch, $data)
{
echo $data;
session_write_close();
return strlen($data);
}
&将回调设置为
curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'curlWriteHandler');
从以下答案/链接中获得参考(我仍然不知道在答案中指定链接是个好主意)
&