Что происходит, когда я изменяю большой файл во время его загрузки пользователем?


Что происходит в следующей ситуации:

В серверной части администратор загрузил много (больших) файлов, заархивировал их, в результате чего 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);
Author: Martijn, 2017-04-21

1 answers

Хотя я все еще не знаю ответа на свой вопрос, я знаю, что файл, который удален на самом деле не удаляется, когда он используется, до тех пор, пока он больше не будет использоваться.

Это означает, что когда пользователь загружает большой файл и администратор удаляет его, он будет продолжать работать для загружающего пользователя, но будет отображаться как удаленный для всех остальных.

В этом случае я создал downloadZip.php, при нажатии на который вы получите самую последнюю версию zip-файла. Когда администратор перезапускает все, это приведет к name2.zip, затем name3.zip и т. Д.

Пользователь нажимает загрузить, получает name1.zip. Администратор удаляет, пользователь не затронут, пользователь B теперь получит name2.zip, когда он/она нажмет downloadZip.php.

 0
Author: Martijn, 2017-08-01 12:27:43