文件下载时,服务器不响应请求!有解决方案吗

Ana*_*nth 1 php download

当前使用的PHP代码是:

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\"");
header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
ob_clean();
flush();
readfile($file);
Run Code Online (Sandbox Code Playgroud)

但是当我下载一些文件时,网站就会停止运行.浏览器正在发送请求但它没有从服务器获得任何响应.它们处于挂起模式,直到下载完成,但一旦下载完成,服务器就会发送响应并且网站会再次开始运行.你能为此解决一下吗?

Pas*_*TIN 7

如果您使用的是基于文件的会话,则可能是您遇到问题的原因:当脚本打开给定用户的会话时,不允许其他脚本(针对同一用户)打开同一会话,以防止并发写道.

典型解决方案:在执行不需要会话保持打开的繁重操作之前关闭会话.


有关此内容的更多信息,请参阅该session_write_close()函数的文档(引用相关句子的一部分):

会话数据被锁定以防止并发写入,只有一个脚本可以随时对会话进行操作.