nginx + libfcgi
Valery Kholodkov
valery+nginxru на grid.net.ru
Вт Мар 8 18:59:37 MSK 2011
По-видимому, по какой-то причине только один поток отрабатывает FCGX_Accept_r.
Кстати, делать FCGX_Request* rq = new FCGX_Request небезопасно, rq может утечь. Лучше делать так же как в примере.
----- User <nginx-forum at nginx.us> wrote:
> > Нужен пример того как раздаются
> запросы, чтобы понять что там
> происходит.
>
> Каждый поток проходит FCGX_Accept_r
> сомостоятельно, примерный код:
>
>
> while (true){
> static pthread_mutex_t accept_mutex =
> PTHREAD_MUTEX_INITIALIZER;
>
> pthread_mutex_lock(&accept_mutex);
> FCGX_Request* rq = new FCGX_Request;
> FCGX_InitRequest(rq, f_socket, 0);
> FCGX_Accept_r(rq);
> pthread_mutex_unlock(&accept_mutex);
> /* ... здесь обработка запроса ... */
> FCGX_Finish_r(rq);
> delete rq;
> }
>
> Метод соответствует примеру threaded.c из
> поставки libfcgi. По идее она должна быть
> на это расчитана.
>
> Вообще я сначала подумал, что libfcgi не
> принимает новый запрос до того, как
> обработается (FCGX_Finish_r), а потом
> догадался останавливать
> обрабатывающий поток совсем ( т.е.
> обработка запроcа не будет завершена
> никогда)
>
> Posted at Nginx Forum: http://forum.nginx.org/read.php?21,181273,181296#msg-181296
>
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru
--
Regards,
Valery Kholodkov
Подробная информация о списке рассылки nginx-ru