Re: Nginx+PHP-FCGI Функция flush() не работает корректно
Андрей Бойко
kaa на berloga.ru
Ср Фев 16 00:39:41 MSK 2011
On Tue, 15 Feb 2011 14:35:39 -0500
"Argos" <nginx-forum at nginx.us> wrote:
> скрипт выполняется на бэкэнде - на
> фронтенде же показывается вся
> информация и собственно прогресс.
> (использую juqery)
> Да можно сделать через Comet, но
> постоянные POST запросы через curl из
> самого скрипта + постоянные запросы на
> стороне фронтенда - это лишняя нагрузка
> на сервер и что самое главное итак
> долгий скрипт будет выполняться ещё
> дольше из-за POST запросов. Как я уже
> говорил самое идеальное это ставить
> куки и эти куки уже и опрашивать
> вытаскивая из них нужную инфу. Поэтому
> то и хочется что бы nginx смог работать с
> flush(). Писал Сысоеву но ответа так и не
> последовало. Видимо реально нельзя
> подружить nginx и flush
>
Читаю-читаю эту ветку и не пойму, как еще лучше-то разжевать надо, чтоб Вы поняли, что Вам предлагают. Но попробую.
Итак, есть несколько слоев приложения.
1. Скрипт, который живет по заданному адресу в FCGI и выполняет простые действия - возвращает весь жабаскрипт и ответ Ок, и запускает основной скрипт где-то там, в глубине сервера.
2. Основной скрипт, который фигачит чего-то там в глубине сервера. Его задача - как-то отдавать наружу промежуточные и окончательный результаты своей работы. Как он может это сделать? Через memcached или просто формируя статическую страничку html (не забываем только, что страничку надо переписывать переименованием, чтоб было атомарно). И страничка, и мемкеш так же имеют свой адрес, куда ломится жабаскрипт за данными о прогрессе. Тяжелое приложение не запускается, ибо данные отдает nginx в обоих случаях.
3. Собственно жабаскрипт, который лезет по определенному статическому адресу и получает промежуточные данные и окончательный результат.
Где curl? Где дополнительные пост-запросы? Кроме того, такая реализация позволит (по желанию) сделать так, чтоб в одно время работал только один тяжелый скрипт (или 2, или 10). Вывод в статическую страничку или в мемкеш не слишком замедлит скрипт по сравнению с выводом в стандартный выход (как понимаю, 5 минут он там все же данные какие-то перемалывает, а не вывод формирует?).
--
Андрей Бойко <kaa at berloga.ru>
Подробная информация о списке рассылки nginx-ru