用于大文件的PHP代理(中继)

时间:2014-05-31 12:29:15

标签: php file proxy download

我正在寻找一个PHP函数,它从Web服务器获取文件,同时输出它。 作为一个大文件,它应该总是在加载后输出一个块,例如1kb,而不是加载整个文件然后输出它。 这可能吗?

1 个答案:

答案 0 :(得分:1)

根据我从您的问题中的理解,您希望提供一个文件下载,即使对于大型文件,也不会占用您的所有内存?如果是这样,这可以通过标准的php文件读取功能实现;像这样:

$chunk_size=1024;
$file_name='read.txt';
//open file
$file=fopen($file_name,'r');

if($file!=false){
    //while we haven't reached the end

    while(!feof($file)){
        //read chunk and output
        $line=fread($file,$chunk_size);
        echo $line;
    }

    fclose($file);
}
else{
     //error reading file
}

如果您愿意,可以将其包装在PHP函数中。应该注意的是,我将这段代码写入堆栈溢出,因此未经测试。但它应该让你对这个理论有所了解。

希望这有帮助,Ryan

/ **编辑** /

P.s此代码不包含强制下载的代码 - 如果您还需要此代码,请告知我们。此外,这应该适用于远程文件,但是,PHP.ini文件中有一个设置允许或阻止此操作(allow_url_fopen)。