Что происходит, когда я изменяю большой файл во время его загрузки пользователем?
Что происходит в следующей ситуации:
В серверной части администратор загрузил много (больших) файлов, заархивировал их, в результате чего 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);
1 answers
Хотя я все еще не знаю ответа на свой вопрос, я знаю, что файл, который удален на самом деле не удаляется, когда он используется, до тех пор, пока он больше не будет использоваться.
Это означает, что когда пользователь загружает большой файл и администратор удаляет его, он будет продолжать работать для загружающего пользователя, но будет отображаться как удаленный для всех остальных.
В этом случае я создал downloadZip.php
, при нажатии на который вы получите самую последнюю версию zip-файла. Когда администратор перезапускает все, это приведет к name2.zip
, затем name3.zip
и т. Д.
Пользователь нажимает загрузить, получает name1.zip
. Администратор удаляет, пользователь не затронут, пользователь B теперь получит name2.zip
, когда он/она нажмет downloadZip.php
.