удалить файл с веб-сервера при загрузке - PullRequest
0 голосов
/ 16 марта 2011

Что происходит, когда пользователь FTP удаляет какой-то файл одновременно, а кто-то загружает его? мой серверный язык - PHP. спасибо

Ответы [ 4 ]

7 голосов
/ 16 марта 2011

На сервере Windows вы не можете удалить файл, когда он используется другим процессом.

В системах Unix файл будет удален, но только для любых «новых» процессов, пытающихся получить к нему доступ. Все, что уже имеет открытый файл, сможет читать / записывать из него, как это было раньше. Файл будет по-прежнему занимать место на диске, пока все дескрипторы файлов на нем не будут закрыты, после чего он действительно будет удален. Таким образом, ваш пользователь FTP по-прежнему сможет завершить его загрузку.

Если ваше намерение состоит в том, чтобы принудительно прервать передачу по FTP, вам следует завершить процесс FTP, который закроет дескрипторы открытых файлов, что позволит ОС завершить удаление файла.

3 голосов
/ 16 марта 2011

Части файла, буферизованные на веб-сервере (в памяти), продолжают загружаться. Если этого недостаточно для загрузчика, он выдает ошибки.

0 голосов
/ 16 марта 2011

Может зависеть от ОС. Вы не можете удалить файл, заблокированный для чтения. Apache устанавливает блокировку чтения файлов при чтении их на aaik, но я не знаю, снимет ли он блокировку до завершения загрузки. Возможно, вы захотите проверить this - я знаю, что это для БД, но это очень похоже на блокировку файлов. Также вы можете проверить этот - раздел директивы файла блокировки Apache.

0 голосов
/ 16 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...