2
在以下情况下会发生什么情况:当用户下载文件时更改大文件会发生什么?
在后端中,管理员上传了很多(大)文件,并将其压缩,结果为example.zip
。
在某个时候,访问者来到网站并开始下载这个大文件。管理员添加了一些更多的文件,并按下“转换为zip”。它开始压缩并将结果写入同一位置,同名example.zip
。
用户下载量达到50%,新的zip文件是否会干扰此操作?我知道,PHP脚本被加载到内存中,但如果你有大文件,那些不适合。
// OPENING THE FILE IN READ-ONLY
$fp = fopen($filepath, "r");
$bufferlength = 1024;
while (!feof($fp)){
// READ A BUFFER SIZE OF THE FILE
$buffer = fread($fp, $bufferlength);
echo $buffer;
$buffer = "";
flush(); // THIS IS ESSENTIAL FOR LARGE DOWNLOADS
}
fclose($fp);
为什么downvote?也许我可以改善这个问题... – Martijn
你测试过了吗?这种情况极不可能实现。 Fopen将打开文件描述符,fread将读取直到结束,如果下载更改文件的用户将简单地下载比无法打开的zip文件或无法结束的请求,因为文件被读取并按块大块地滚动,直到结束被发现。 – Gntem
我要实现这个,所以我想事先知道要注意什么:)这将在资源有限的主机上,所以我不能简单地重命名它并创建另一个文件。同样的原则,如果我在下载时删除它(并且将另一个命名文件作为回报放入今天的日期),现在会发生什么? – Martijn