在客户端,用户点击一个下载按钮,(apache)web服务器(和PHP5.4)会创建一个非常大的文件,发送给客户端。因为创建这个(巨大)文件需要一段时间,5分钟后浏览器(FF)会提示消息:“连接超时:10.0.0.100服务器响应时间过长”。浏览器时钟:example.com服务器花费太长时间来响应
在我的PHP页面上,我设置了一个很长的超时时间:set_time_limit(3600);但这并没有帮助。在服务器生成文件之前,我尝试回显一个空白区域,让浏览器知道有响应,但是这种技巧会将文件内容发送到浏览器本身,这不是我想要的。
由于我使用的标题,但我认为这是没有任何东西之前,浏览器超时的从服务器发送的问题:
$size= filesize($path);
$fname = basename ($path);
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-Disposition: attachment; filename=\"".$fname."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$size);
header("Content-type: application/octet-stream");
ob_clean();
flush();
readfile($path);
exit;
如何解决这个问题的任何想法?也许有一种JavaScript方式?