回显file_get_contents时出现错误324 EMPTY_RESPONSE

时间:2012-12-14 11:37:28

标签: php file-get-contents

我正在尝试制作像ftp这样的东西。我有一个自制服务器,在wamp上设置了应用程序。 而且我不想将我的所有文件保存在wamp文件夹中,因此我也从该应用程序访问本地文件。

已经阅读了很多工作人员,我不能这样做,没有浏览器让我做这样的事情。但我以某种方式管理它。

这是我用来下载文件的代码:

 function getFile($name,$path) {
    if(file_exists($path.$name)) {
        $name = urldecode($name);
        $fsize = filesize($path.$name); 

        header("Content-disposition: attachment; filename=\"".$name."\"");
        header("Content-type: application/force-download");
        header("Content-length: ".$fsize);

        echo file_get_contents($path.$name);
    }

它适用于小文件,无论它们有什么扩展名,但我还必须下载超过200Mb的一些.exe文件。

我已经在php.ini中设置了memory_limit,这是我遇到的第一个麻烦的原因,但现在我得到了错误:324。

任何想法如何克服它?

1 个答案:

答案 0 :(得分:0)

file_get_contents在内存中的第一个读取文件中然后返回它。 对于200MB的文件大小,一个脚本需要超过200MB的内存。

为了修复它,你应该按块读取文件并输出。

例如

$fp = fopen($path.$name, "rb");
if ($fp) {
    while(!feof($fp)) {
        $str = fread($fp, 1024);
        echo $str;
    }
    fclose($fp);
}