Php 大文件下载需要更多时间

Php 大文件下载需要更多时间,php,file,Php,File,我使用以下代码下载了大约920MB的文件 set_time_limit(0); 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("X-Se

我使用以下代码下载了大约920MB的文件

set_time_limit(0);

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("X-Sendfile: $zipname");                 // For Large Files

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);
在编写这段代码之前,我对以下链接做了一些研究,但对我没有多大帮助,因为只有(2MB)的文件下载仍然需要更多的时间。它没有显示和传输速率或其他任何内容。我想下载开始服务的文件约60Kbps,与所有文件(大或小)

更新:还有一件事我注意到它没有显示任何正在执行的下载过程,有时会显示弹出窗口来选择位置,点击保存按钮后,它直接保存到计算机,而没有任何下载过程窗口:(


请帮我指引正确的方向。基于以上评论,有两种解决方案:

1) 直接下载文件即可。您似乎没有进行任何验证,因此如果没有,则只需将用户传递到要下载的文件,并让apache处理


2) 如果确实需要验证/预处理,那么检查modxsendfile-添加头是不够的,实际上需要将mod添加到apache。如果您使用的是Linux,则从源代码()编译。如果你不在Linux中,那么作者会回复说他可以提供二进制文件——但那是在2010年。网络上有一些建议——虽然我已经有一段时间没有看过了,所以也没什么帮助。

如果你研究过这些,为什么没有使用任何代码?@N.B.我尝试了所有代码,但在问题中只提到了一个。我一个接一个地试过,但都不适合我:(你真的安装了modxsednfile吗?它需要添加到apache中。这将是我的第一个建议。第二个问题:为什么要通过PHP来实现?为什么不直接实现?@Robbie,我对modxsendfileApache模块没有任何想法,我将尝试启用它,第二个-我必须跟踪一些额外的东西,这就是为什么我使用PHP来下载它的原因。)如跟踪IP、向收件人发送电子邮件、管理员等。在这种情况下,这就是我的答案-请阅读以下内容: