大文件的PHP代理(中继)

大文件的PHP代理(中继),php,file,proxy,download,Php,File,Proxy,Download,我正在寻找一个PHP函数,它在输出文件时从web服务器获取文件。 由于它是一个大文件,它应该总是输出块,如1kb一旦加载,而不是加载整个文件,然后输出它。 这可能吗?根据我从您的问题中了解到的情况,您希望提供一个不会占用所有ram的文件下载,即使是大文件?如果是这样,这可以通过标准的php文件读取函数实现;像这样: $chunk_size=1024; $file_name='read.txt'; //open file $file=fopen($file_name,'r'); if($file

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

根据我从您的问题中了解到的情况,您希望提供一个不会占用所有ram的文件下载,即使是大文件?如果是这样,这可以通过标准的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函数中。应该注意的是,我把这段代码写进了堆栈溢出,所以它没有经过测试。但它应该给你一个关于理论的想法

希望这有帮助,瑞安

/**编辑**/

注意:此代码不包括强制下载的代码-如果您也需要此代码,请让我知道。此外,这应该适用于远程文件。然而,PHP.ini文件中有一个允许或阻止此操作的设置(allow_url_fopen)