Понимаю, что формулировка и сам вопрос могут показаться странными. Изъясняюсь, как умею.
Представим, у нас есть запрос, который запускает операцию, состоящую из 5 блоков, выполняемых php на сервере.
У каждого действия свое название - инициализация, загрузка фотографии, извлечение данных, архивация, отправка клиенту. Возникает вопрос - сервер ответит нам только тогда, когда все будет выполнено, поэтому возвращать промежуточные состояния, какая сейчас идет операция, не получится (или есть варианты?)
Само собой напрашивается напилить свой вариант "пинг-понга", где запросы идут подряд с параметрами - сначала на operation.php?step=1, как закончится - на второй шаг и т.д.
Но может я велосипед изобретаю? Может уже как-то оформлено в библиотеку или какой-то шаблон проектирования или какой-то фичей в jquery напилены?
В-общем, такой вопрос.
Саму отгрузку можно отслеживать по событию xhr.progress
Ничего о "архивации" и "извлечении" эта штука конечно не знает, но вы можете отправлять с сервера сообщения о этих действиях в стиле long polling, и выводить на клиенте.
сервер ответит нам только тогда...
конечно, если вы не можете изменить сервер, то ничего не получится.
Зачем Вы хотите всё в один поток запихнуть?! У Вас же - WEBSERVER!!!
1. Создаём на клиенте (js) класс работы с очередью - менеджер очереди задач.
2. Превращаем на стороне сервера обработчик POST-запроса в Long-Polling.
3. После "тяжёлого действия" - возвращаем события дальнейшей обработки на клиент через Long-Polling.
4. Если запрос оборвался - восстанавливаем его с помощью менеджера очереди и продолжаем собирать информацию обработки конкретного изображения.
Работа с каждым из изображений (действием из 5-ти шагов) - происходит АСИНХРОННО! вне зависимости от состояния соседних!
Это и быстро, и максимально продуктивное использование канала передачи данных.