Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Непонятка с загрузкой файла на сервер через форму.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Это не стандартный вопрос - как загрузить и не работает - все работает но как то не так.
mishansaloma
Отправлено: 29 Марта, 2015 - 19:08:05
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Март 2015  


Помог: 0 раз(а)




Всем здравия. Думал потяну сам, но пока что есть только идеи, но сейчас напишу поподробнее.
Классическая ситуация с загрузкой файла на сервер формой. Файл грузится в темповую папку, потом в скрипте обрабатывается, и затем перемещается по назначению.
Все работает нормально, пока не появляется слабый канал интернета, а файл наоборот немаленький (например 10мб). И тут интересная ситуация:
1. Пользователь заполняет форму и нажимает кнопку - отправить.
2. Проходит энное время и страница с формой перезагружается, на исходное состояние, т.е. пользователь не видит результат загрузки. Но! Обработка файла на сервере продолжается. 3. Пользователь заново заполняет форму и снова отправляет файл. Он нормально загружается и тут пользователь видит, что файлов в результате загружено 2 и первая загрузка закончилась таки правильно.

Вопрос в том как такое могло произойти? Случается очень редко (1 из 1000) и только когда есть проблемы с интернетом.
Я предполагал, что не хватает времени на выполнение скриптов, но в результате то все нормально отрабатывается.

А теперь немного подробностей:
1. Форма передает управление на назначенный ей скрипт обработчик. По идее скрипт запускается только после загрузки файла (Вот тут вопрос - а есть ли тайаут на ожидание загрузки?)
2. Скрипт проверяет файл на допустимость (тут все быстро).
Затем скрипт делает небольшую обработку файла (например создание аватарки из картинки) - может затягиваться до 20 сек, т.к. обработать анимированный гиф размером в 5мб дело не быстрое (сделать аватарку тоже анимированный гиф), делаю Имеджиком.
Затем если все условия проверок и аватарка в порядке то все заливается на облачное хранилище.
В самом конце, если заливка пошла хорошо - в базе прописываются ссылки на файлы в облаке.
После отработки скрипта временный файл с сервера удаляется автоматически.
3. На выходе из скрипта пользователь направляется на форму - "Файл загружен"

Вроде я правильно понимаю как работает логика загрузки. Но непонятно, почему иногда пользователь не видит п.3.

Как выход - сделать загрузку файла на сервер предзагрузчиком (типа как в гмайле файлы добавляются к письму) и заблокировать до полной загрузки кнопку "отправить", тогда пользователь будет видеть как его файл загружается и не будет паниковать. Но на такой вариант немного нету времени, т.к. логика загрузки довольно сложная, а тут придется перебросить предзагруженный файл в отдельную папку, чтобы он автоматически не был стерт, следить за ним и если пользователь передумал - то самому стирать и т.д.

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

Очень надеюсь на помощь.
Если написал путанно, то напишите, что именно пояснить и распишу поподронее.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с файловой системой и файлами »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB