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