ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: nginx + libfcgi



По-видимому, по какой-то причине только один поток отрабатывает FCGX_Accept_r.

Кстати, делать FCGX_Request* rq = new FCGX_Request небезопасно, rq может утечь. 
Лучше делать так же как в примере.

----- User <nginx-forum@xxxxxxxx> 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@xxxxxxxxx
> http://nginx.org/mailman/listinfo/nginx-ru

-- 
Regards,
Valery Kholodkov

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.