[веб-администрирование] асинхронная отправка формы и файла к ней
1. Для файлов серьезных размреров (порядка Гб) стадия копирования файла начинает занимать ощутимое время (десятки секунд). Понятно, что по сравнению со временем загрузки на сервер это мелочи. Но могут быть скрипты, которые надеятся на мгновенную готовность файла после его загрузки и не учитывают время на копирование.rename делай, а не копируй
Если у меня tmp на одном разделе, а целевой каталог - на другом, то это не спасает.
сделай чтоб не в /tmp загружалось, а на нужный раздел
Оставить комментарий
tihon972009
Разговор пойдет о случае, когда пользователю, помимо текстовых данных, требуется отправить файл.Иногда для удобства пользователя бывает нужно разделить во времени отправку файла и отправку всего остального содержимого формы. Например, когда файл большой - чтобы пользователь выбрал файл, нажал - и файл стал загружаться, а пользователь в это время заполнял бы поля формы, поглядывая на бегущую полоску и тихо радуясь.
При получении формы с файлом, который в любом случае приходит внутри POST-запроса (в любом ведь? веб-сервер кладет файл во временный каталог и хранит его там до тех пор, пока принимающий скрипт не закончит работу.
Но фактически файл еще остается нужен, т.к. форма со всем остальным еще не пришла (а до этого момента с файлом делать нечего).
Чтобы сохранить файл - приходится писать его в специально заведенный для этого псевдовременный каталог (т.е. обычный каталог, который чистит хрон).
Здесь возникают две проблемы:
1. Для файлов серьезных размреров (порядка Гб) стадия копирования файла начинает занимать ощутимое время (десятки секунд). Понятно, что по сравнению со временем загрузки на сервер это мелочи. Но могут быть скрипты, которые надеятся на мгновенную готовность файла после его загрузки и не учитывают время на копирование.
Да и вообще как-то глупо принимать файл в то место, где он точно не нужен.
В общем, это не очень хорошо.
2. Необходимость чисткой хроном вместо чистки силами ОС или веб-сервера (точнее, тот факт, что об этом приходится задумываться и потом поддерживать).
Поэтому у меня два вопроса:
1. Можно ли как-нибудь грузить файл сразу в нужную директорию на сервере, а не во временную? Может, другой протокол использовать, порт открыть, запрос какой-то хитрый посылать и т.п.? (ну очень неохота гигабайт туда-сюда гонять)
2. Как сделать временную-постоянную директорию не полностью своими руками, а натравить туда что-нибудь типа веб-сервера или ОС (чтобы это самое следило за каталогом и время от времени удаляло оттуда старые файлы).
Если нельзя, то, я надеюсь, хотя бы shell-скрипт, который удаляет файлы старше какого-то момента, можно написать?
Веб-сервер - apache/nginx (FreeBSD)