Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果正在进行流式下载,Nginx PHP-FPM将不提供请求_Php_Curl_Nginx_Fastcgi - Fatal编程技术网

如果正在进行流式下载,Nginx PHP-FPM将不提供请求

如果正在进行流式下载,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应用程序下载正在进行的请

在安装中,我们在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


请帮忙。

问题终于解决了,主要是会话锁问题

您需要有回调函数来处理会话关闭以及写入接收到的数据

回调函数:

function curlWriteHandler($ch, $data)
    {
        echo $data;
        session_write_close();
        return strlen($data);
}
&将回调设置为

curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'curlWriteHandler');
从以下答案/链接中获得参考(我仍然不知道在答案中指定链接是个好主意)

&