Php 文件下载时服务器不响应请求!有解决办法吗?

Php 文件下载时服务器不响应请求!有解决办法吗?,php,download,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-s

当前使用的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);

但当我下载一些文件时,网站就会停止运行。浏览器正在发送请求,但未从服务器获得任何响应。在下载完成之前,它们处于挂起模式,但一旦下载完成,服务器将发送响应,网站将再次开始运行。您能给出一个解决方案吗?

如果您使用基于文件的会话,这可能是您出现问题的原因:当脚本为给定用户打开会话时,将不允许其他脚本(针对同一用户)打开该会话,以防并发写入

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


有关这方面的更多信息,请参阅函数文档(引用相关句子的一部分):

会话数据已锁定以防止 并发写入只能执行一个脚本 随时对会话进行操作


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

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


有关这方面的更多信息,请参阅函数文档(引用相关句子的一部分):

会话数据已锁定以防止 并发写入只能执行一个脚本 随时对会话进行操作