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