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