Re: Catalyst: увеличиваем скорость реакции
Sergeev Serge
simne at yandex.ru
Mon Sep 13 09:54:56 PDT 2010
13.09.10, 02:27, "Alexandr Ciornii" <alexchorny at gmail.com>:
> Привет
>
> 12 сентября 2010 г. 18:44 пользователь Sergeev Serge написал:
> > Привет!
> >
> > Вообще в Перл 5 к сожалению (в отличие от ПХП) есть только один метод разблокировать клиента и продолжить фоновое выполнение - это форк (запускается копия текущего процесса, а затем эта копия отсоединяется от текущего процесса, а сам текущий процесс завершается и отпускает клиента).
>
> Насколько я помню, close(STDOUT); позволяет продолжить выполнение
> после полной отдачи страницы. А как в PHP это можно сделать?
Как раз в PHP оно именно где-то так, просто и делается.
А вот в Perl close(STDOUT) в mod_perl/fast-cgi вообще не имеет смысла, а fork работает и в cgi, и в fast-cgi, и в mod_perl.
> > При этом очевидно, что форк catalyst это ужжасно долго,
>
> fork под Unix - это всегда очень быстро, программа не копируется, а
> используется COW. Например, Apache+mod_perl использует COW, а в данном
> случае размер процесса может быть весьма большим.
Вы не забыли что речь идет не о helloworld а о реальном продакшеновом приложении под catalyst?
Там может быть например презагрузка кучи либ и также прекеширование данных на старте.
Ну допустим оно даже форкается тупым копированием памяти, но это все равно сожрет кучу ОЗУ и в любом случае это медленнее чем просто несколько переключений задач на отправку данных в отдельный процесс и получение от этого процесса подтверждения.
Так, по опыту, в реальной жизни, приложение на catalyst может стартовать десятки секунд.
More information about the Kiev-pm
mailing list