Показать сообщение отдельно
  #9 (permalink)  
Старый 25.09.2016, 15:12
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Еще раз

Сообщение от warren buffet
У тебя же не прогресс загрузки, а прогресс обработки.

Загрузкой занимается браузер с сервером и это происходит до запуска php скрипта. Скрипт на сервере запускается когда файл уже загружен. Ответ php скрипта реализуется в фазе закрытия php как программы. Поэтому ты не можешь отображать в браузере процессы в php скриптах.

Браузер -> сервер -> php -> вывод из буфера -> сервер -> браузер.

Прогресс загрузки файла на сервер возможен благодаря взаимодействию браузера и сервера. Браузер посылает кусок байтов, сервер подтверждает - получен кусок, давай другой. До php в этой фазе еще ничего не доходит. Ясно?

Чтобы показать прогресс ОБРАБОТКИ данных, придется посылать эти данные кусками и на каждый кусок повторять цепочку

Браузер -> сервер -> php -> вывод из буфера -> сервер -> браузер.

то есть каждый раз поднимать php (это же всего лишь серверная программа).

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