Php 通过慢速连接下载文件不完整

Php 通过慢速连接下载文件不完整,php,apache,large-files,Php,Apache,Large Files,我在一个网站(ApacheWebServer)上有一个15MB的文件,它可以在速度合理的连接上正常下载,但在速度较慢的连接上几乎总是不完整的(例如,28KB/秒)。不完整文件的大小是随机的,从2 MB到13 MB。我已经在Safari和Firefox中验证了这一行为,连接的延迟可以忽略不计。两个浏览器都没有向用户指出文件不完整,但大小小于15MB。我尝试过通过直接链接和带有适当标题的PHP下载脚本进行下载:结果相同 还有其他人经历过这种问题吗 如果使用PHP脚本发送文件,则在大量下载时会遇到PH

我在一个网站(ApacheWebServer)上有一个15MB的文件,它可以在速度合理的连接上正常下载,但在速度较慢的连接上几乎总是不完整的(例如,28KB/秒)。不完整文件的大小是随机的,从2 MB到13 MB。我已经在Safari和Firefox中验证了这一行为,连接的延迟可以忽略不计。两个浏览器都没有向用户指出文件不完整,但大小小于15MB。我尝试过通过直接链接和带有适当标题的PHP下载脚本进行下载:结果相同


还有其他人经历过这种问题吗

如果使用PHP脚本发送文件,则在大量下载时会遇到PHPs脚本限制。有关最大执行时间,请参见php.ini

因此,您不希望使用PHP读取文件,然后将其回显到浏览器


相反,您希望将浏览器重定向到该文件。

是否指定(有效)
内容长度
标题?看看这是否有区别。更适合,因为直接下载也会失败(您确实检查了错误日志b.t.w,并且您是否将日志级别设置得相对详细?)我在php文件中已经有了有效的内容长度,所以不是这样。我确实检查了错误日志,但我没有权限将日志级别更改为调试。我已经提交了一个提升日志级别的请求,我们将看看有什么要说的。谢谢正如我在问题中指出的那样,我尝试了PHP和直接链接,结果相似。PHP脚本在Linux上运行,它不根据max_execution_time计算文件和网络操作。max_execution_time是一个PHP设置,与底层操作系统无关。因为PHP有一个输出缓冲区,所以脚本需要等待更多数据被传输。这就是为什么在带宽较低时,最大执行时间很重要。但是,如果您在没有PHP的情况下访问该文件并遇到相同的问题,那么您是对的,它与PHP或max_execution_time无关。实际上,计算时间取决于操作系统()Linux不计算阻止请求(即读取文件和网络传输)所花费的时间,Windows也不计算。哦,很高兴知道。在您的情况下,慢速网络连接是否也像睡眠(30)?因为我在通过PHP生成下载时遇到了完全相同的情况。在慢速连接上,下载是不完整的(它也是linux服务器),对我来说,解决方案是增加最大执行时间
safe_mode = off
max_input_time = 9000
memory_limit = 1073741824
post_max_size = 1073741824
file_uploads = On
upload_max_filesize = 1073741824
max_file_uploads = 100
allow_url_fopen = On
default_socket_timeout = 60
session.gc_maxlifetime = 1800
session.cache_expire = 180