Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: mod_perl and waitpid() failed (10: No child processes)
Hello!
On Fri, Mar 12, 2010 at 01:04:21PM +0200, Vasil Mikhalenya wrote:
> Приветствую,
>
> Т.к. ответа на письмо в
> рассылку<http://forum.nginx.org/read.php?21,60474,60474>я не получил,
> нашел единственный способ реализовать данный функционал -
> используя mod_perl.
> И все вроде бы получилось, обработку исключительных ситуаций оставил на
> потом, и когда пришло это "потом", с ужасом обнаружил что не могу обработать
> код ответа порожденного процесса.
>
> в перл модуле это следующий код:
>
> if ( (system("wget $uri -O '$path' > /dev/null 2>&1") ) or ( system("mogrify
> -resize $size '$path' > /dev/null 2>&1") ) ) {
>
> в логе такое
>
> ==> error.log <==
> 2010/03/12 13:02:53 [notice] 10842#0: signal 17 (SIGCHLD) received
> 2010/03/12 13:02:53 [alert] 10842#0: waitpid() failed (10: No child
> processes)
>
> Видел что подобная тема поднималась в рассылке, но в чем проблема так и не
> понял. Использовать Mechanize не предлагайте, работает гораздо дольше
> wget'а.
> Поясните почему нельзя или как можно получить код возврата процесса.
Нельзя потому что код блокируется, а значит блокирует весь рабочий
процесс nginx'а.
Ну а то что наблюдается - это ерунда. Просто
SIGCHLD по завершению порождённого вами процесса попал в
стандартный обработчик nginx'а, а он на это не расчитан.
Используйте встроенный перл для подсчёта md5, а
выкачку/сохранение/resize делайте с помощью
proxy_pass/proxy_store/image_filter соответственно.
Maxim Dounin
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|