ПРОЕКТЫ 


  АРХИВ 


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, fastcgi php and invision powerboard 2.1.7 (ajax?)



On Monday 18 December 2006 23:45, Igor Sysoev wrote:
> On Sun, 17 Dec 2006, Malik Abdugaliev wrote:
> > Привет.
> >
> > Поставил nginx 0.5.4, php 5.2.0 как fastcgi. Система FreeBSD 6.1.
> > На всём этом стоит движок форума invision powerboard 2.1.7. Это делалось
> > на замену обычной связке - апаче+mod_php и nginx как фронтенд.
>
> Возможно, invision powerboard не полностью совместим с режимом FastCGI.

Возможно конечно, но дело в том, что сотрудник российского представительства 
Invision-а мне и посоветовал перейти на nginx+fastcgi, до этого nginx был 
только фронтендом для апача+mod_php и раздавал картинки.
Узнать подробности у представительства достаточно сложно - хоть движок и 
куплен легально, но техподдержка просит денег как только обсуждение проблем 
выходит за рамки общих фраз.
Кстати, попробую-ка ещё на их форуме написать.

>
> > Всё заработало с виду нормально, но после часа эксплуатации заметили
> > некоторые проблемы. Самое основное это ошибки при использовании AJAX-фичи
> > для быстрого редактирования своих сообщений:
> > 2006/12/17 16:10:00 [error] 55895#0: *28759 upstream prematurely closed
> > connection while reading response header from upstream, client:
> > 10.0.1.31, server: forum.tld, URL:
> > "/index.php?s=&act=xmlout&do=post-edit-save&p=3213952&t=404709&f=129",
> > upstream: "fastcgi://unix:/tmp/php.sock:", host: "forum.tld", referrer:
> > "http://forum.tld/index.php?showtopic=404709";
> >
> > Для клиента это выглядит так - выбираешь опцию "Быстрое редактирование",
> > правишь сообщение, нажимаешь "Применить исправления", появляется бегунок
> > и на этом всё, более никаких изменений.
> > В логах PHP при этом ругань о преждевременной (premature) кончине скрипта
> > sources/ipclass.php, с указанием строки 3737 (к сожалению точных логов не
> > сохранилось):
> >    /**
> >        * UnHTML and stripslashes _GET _POST value
> >    *
> >        * @param        string  Input
> >        * @return       string  Cleaned Input
> >        * @since        2.1
> >        */
> >    function parse_clean_value($val)
> >    {
> >        if ($val == "") # <<< вот строка номер 3737 <<<
> >        {
> >                return "";
> >        }
> >
> > Я грешил на отсутствие некоторых переменных, которые не передавались в
> > fastcgi, но эксперименты ними не помогли. Вот конфиг nginx в части
> > fastcgi: location ~* ^.+\.(php)$ {
> >    fastcgi_pass unix:/tmp/php.sock;
> >    fastcgi_index  index.php;
> >
> > # пробовал с минимумом параметров:
> >    fastcgi_param  PATH_TRANSLATED    $fastcgi_path_translated;
>
> А чему равно $fastcgi_path_translated ?

Прошу прощения, это уже результат моих неудачных экспериментов. В минимальном 
конфиг были описаны следующие переменные:
 fastcgi_param SCRIPT_FILENAME    /www/htdocs$fastcgi_script_name;
 fastcgi_param  QUERY_STRING       $query_string;
 fastcgi_param  REMOTE_ADDR        $remote_addr;



>
> >    fastcgi_param  QUERY_STRING       $query_string;
> >
> > # потом с параметрами для метода POST:
> >    fastcgi_param  REQUEST_METHOD     $request_method;
> >    fastcgi_param  CONTENT_TYPE       $content_type;
> >    fastcgi_param  CONTENT_LENGTH     $content_length;
> >
> > # и со всеми параметрами, какие нашёл:
> >    fastcgi_param  REDIRECT_STATUS    200;
> >    fastcgi_param  SCRIPT_FILENAME    $fastcgi_path_translated;
> >    fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
> >    fastcgi_param  REQUEST_URI        $request_uri;
> >    fastcgi_param  DOCUMENT_URI       $document_uri;
> >    fastcgi_param  DOCUMENT_ROOT      $document_root;
> >    fastcgi_param  SERVER_PROTOCOL    $server_protocol;
> >    fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
> >    fastcgi_param  REMOTE_ADDR        $remote_addr;
> >    fastcgi_param  REMOTE_PORT        $remote_port;
> >    fastcgi_param  SERVER_ADDR        $server_addr;
> >    fastcgi_param  SERVER_PORT        $server_port;
> >    fastcgi_param  SERVER_NAME        $server_name;
> > }
> >
> > А вот так запускается php:
> > PHP_FCGI_CHILDREN=10 /usr/local/php520/bin/php -a -b /tmp/php.sock
> >
> >
> > Кроме этого возникала другая ошибка, которую мне не удалось привязать к
> > конкретному действию на форуме (вероятно какие ресурсоёмкие запросы, типа
> > поиска):
> > 2006/12/17 16:10:50 [error] 55893#0: *29240 FastCGI sent in stderr: "PHP
> > Fatal error:  Out of memory (allocated 2883584) (tried to allocate
> > 1732099484 bytes) in /www/forum/sources/sql/mysql_extra_que
> > ries.php on line 70" while reading response header from upstream, client:
> > 195.38.161.6, server: forum.tld, URL:
> > "/index.php?s=&act=xmlout&do=get-member-names&name=%u041F%u0438%u043B%u04
> >4E%u0 43B%u044F&__=1166350279734", upstream:
> > "fastcgi://unix:/tmp/php.sock:", host: "forum.tld", referrer:
> > "http://forum.tld/index.php?act=Search&f=";
> >
> > Т.е. php запросил 1.7 гига памяти, в то время когда ему выдано 2.8 метра
> > )
> >
> >
> >
> > После часа экспериментов на живых людях пришлось откатиться к старой
> > схеме с апачем (
> >
> > Есть ли у кого-нибудь какие замечания по устранению этих проблем?
> > Спасибо.
> > Малик.
>
> Игорь Сысоев
> http://sysoev.ru


Спасибо.
Малик.

П.С. Не нашёл рекомендаций по поводу цитирования в ответах в список рассылки - 
нужно ли цитировать всё целиком или достаточно только необходимой части?



 




Copyright © Lexa Software, 1996-2009.