Javascript 浏览器超时:example.com上的服务器响应时间过长

Javascript 浏览器超时:example.com上的服务器响应时间过长,javascript,php,firefox,download,connection-timeout,Javascript,Php,Firefox,Download,Connection Timeout,在客户端,用户单击下载按钮,(apache)Web服务器(和PHP5.4)然后创建一个非常大的文件,完成后必须发送到客户端。由于创建此(巨大)文件需要一段时间,因此浏览器(FF)在5分钟后会提示消息:“连接已超时:10.0.0.100的服务器响应时间过长” 在我的php页面上,我设置了一个大的超时:set_time_limit(3600);但这没用。我尝试在服务器生成文件之前回显一个空白,让浏览器知道有响应,但这个技巧将文件内容发送到浏览器本身,这不是我想要的 作为我正在使用的标题,但我认为这不

在客户端,用户单击下载按钮,(apache)Web服务器(和PHP5.4)然后创建一个非常大的文件,完成后必须发送到客户端。由于创建此(巨大)文件需要一段时间,因此浏览器(FF)在5分钟后会提示消息:“连接已超时:10.0.0.100的服务器响应时间过长”

在我的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方法?

我会通过ajax(调用generate.php)启动文件创建,向客户端显示一条消息“您的文件正在生成,准备好后将下载。请不要关闭浏览器”

在generate.php中,完成后设置某种标志,例如更新数据库、将文件保存到磁盘等

在初始ajax生成.php之后,定期(比如每30秒)向check.php发出ajax请求,该请求将检查上述标志

如果找到,文件uri将返回给调用的js,然后js可以下载它(设置window.location或隐藏iframe的src)