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