У меня есть проблемы с моим приложением. Сценарий - то, что, существует php крон, который выполняет каждую 1 минуту, и он обрабатывает папку загрузок, где, файлы загружаются через FTP-сервер (vsftpd). Если сервер загрузит файл, который составляет 1 ГБ, то php крон обработает файлы, даже если он не будет загружен полностью. Я не могу изменить синхронизацию крона, но я хочу знать, имеет ли, ли vsftpd любую функцию, которой может загрузить файл в /tmp
и затем переместитесь в исходную папку, после того как загрузка завершена?
Нет, эта функция не встроена.
Но есть решения и для этого.
Наверное, лучше всего сказать загружающей программе, чтобы она загрузила его с другим именем, например, file-weverever.txt.incomplete
и после завершения загрузки переименовать его в обычное имя.
.
Преимущество:
Переименование происходит быстро (так как файл находится в той же файловой системе)
.
Если загрузка не заканчивается корректно, она не переименовывается.
Недостатком, конечно же, являются изменения как в процессе загрузки, так и в cronjob PHP (для игнорирования *.incomplete
файлов). Другое решение - загрузить его в другую папку, как вы и предлагали, и посмотреть его с помощью чего-нибудь вроде incron.
.
При этом вы можете просмотреть папку и переместить завершенные файлы в другую папку.
.
Недостаток: если загрузка не удастся выполнить наполовину, она все равно будет перемещена и, возможно, обработана