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