浏览器在文件下载期间暂停站点

时间:2013-11-06 08:35:08

标签: php header

我有一小块代码可以帮助下载文件。但是在文件下载期间网站没有打开/工作,但是当我在其他浏览器上打开网站时它的工作。我不知道文件下载期间浏览器发生了什么。以下是我用来下载zip文件的标题:

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/zip");
header("Content-Disposition: attachment; filename=\"".$zipname."\"");
header("Content-Transfer-Encoding: binary");
//header("Content-Length: ".filesize($directory_location . '/' . $zipname));

ob_end_flush();


readfile($directory_location . '/' . $zipname);
ob_end_clean();

即使我不知道如何调试它,所以我从我的代码中得到了弱点。

1 个答案:

答案 0 :(得分:1)

所以,因为你正在使用会话:

“下载”脚本运行时,“打开”会话阻止其他脚本访问会话。

在将文件内容流式传输到客户端之前,

session_write_close修复了该问题。只需在完成检查会话中检查的任何内容之后,在脚本的耗时部分开始之前调用它 - 这将释放会话锁定,以及下载脚本时调用的其他脚本运行可以再次访问会话。