nginx, fastcgi php and invision powerboard 2.1.7 (ajax?)
Igor Sysoev
is at rambler-co.ru
Mon Dec 18 20:45:58 MSK 2006
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
More information about the nginx-ru
mailing list