ПРОЕКТЫ 


  АРХИВ 


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 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.

Всё заработало с виду нормально, но после часа эксплуатации заметили некоторые
проблемы. Самое основное это ошибки при использовании 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  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%u044E%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.