从同一个脚本下载两个同时发送的php文件之间的延迟

时间:2009-11-26 14:28:13

标签: php download header delay

我在这里遇到一个奇怪的问题:如果我尝试使用相同的下载脚本下载多个文件(我已尝试在php.net上找到5个不同的脚本),第一个进展顺利,但第二个有延迟距其请求时间约60秒。如果我取消第一次下载,则第二次下载突然开始。 我已经测试了从apache直接下载文件,一切正常。 这是我尝试的最后一个脚本:

<?php
$filename= $_GET['file'];

header("Content-Length: " . filesize($filename));
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename=writeToFile.zip');

$file_contents = file_get_contents($filename);
print($file_contents);
?>

3 个答案:

答案 0 :(得分:2)

可能是底层Web服务器对来自同一IP的并发连接有限制吗?你能同时尝试两种不同的IP吗?

答案 1 :(得分:1)

不,不,不......问题在别的地方

您已开始会话(手动或自动) 和会话通常存储在文件中......

所以当打开第一个脚本然后打开会话和LOCK FILE ...其他请求必须等待解锁会话文件......

现有的两个解决方案...... - 使用自我类进行会话存储...而不锁定文件会话(错误脚本可能会覆盖会话数据) - 或者在file_get_content之前调用session_write_close();

答案 2 :(得分:0)

您可以尝试readfile($filename)而不是$file_contents = file_get_contents($filename);print($file_contents);由于readfile()不会将内容存储在字符串中,因此它不会像file_get_contents()那样占用内存。

@Pekka Gaiser对并发连接有一个很好的观点。另请参阅PHP正在使用的内存限制。