用PHP下载大文件

用PHP下载大文件,php,javascript,jquery,download,Php,Javascript,Jquery,Download,我将jQuery与PHP结合使用。 我用PHP编写了一个简单的下载函数: function downloadFile($sFile){ #Main function header('Content-Type: '.mime_content_type($sFile)); header('Content-Description: File Transfer'); header('Content-Length: ' . filesize

我将jQuery与PHP结合使用。 我用PHP编写了一个简单的下载函数:

function downloadFile($sFile){
        #Main function
        header('Content-Type: '.mime_content_type($sFile)); 
        header('Content-Description: File Transfer');
        header('Content-Length: ' . filesize($sFile)); 
        header('Content-Disposition: attachment; filename="' . basename($sFile) . '"');
        readfile($sFile);
    }
我可以通过这个脚本下载一个文件,但是如果它是一个大文件(比如1GB),readfile函数需要他的时间,直到下载开始。所以我得等一分钟左右,直到下载真正开始。
您知道如何优化我的脚本,以便立即开始下载吗?

您可以将Apache配置为在
.htaccess
文件中设置正确的头文件。然后,您可以直接链接到该文件,而不是PHP页面。这也将减少服务器负载


当然,如果PHP脚本执行的功能不仅仅是设置头(例如身份验证),那么这不是一个选项。正如@N.B.在他的评论中提到的,您必须将文件分块通过PHP。

将文件分块发送。这意味着,不要使用readfile,而是使用fopen/fread组合,并每隔几千字节回显一次。查看此URL了解实现的详细信息:请参见此处--