Назад | Перейти на главную страницу

php как выключение fastcgi без журнала

Я запускаю php5 за прокси-сервером nginx, как Fast_CGI, после некоторого использования (всегда при использовании, а не в режиме ожидания. Сервер Fast_CGI просто отключается (больше не отображается в 'ps -A'.

В php.ini Log_Errors установлен на On, а Error_Log установлен на /var/log/php.log, однако при просмотре php.log отображаются только ошибки запуска, ничего, что означало бы завершение работы php.

Лучший способ выяснить, в чем проблема, когда вы не получаете никакого вывода, - это запустить php под strace. Запустите php и получите список pid от ps. Затем запустите:

# strace -f -o /tmp/php.strace.log -p pid1 -p pid2 -p pid3 ....

Когда PHP умирает, посмотрите, что происходит в журнале.

Сказав это, в вашем конкретном случае я подозреваю, что у вас неправильные переменные среды. Если у вас есть единственный процесс php, это согласуется с моей догадкой. PHP имеет возможность завершить работу после определенного количества запросов. Это разумный шаг, чтобы предотвратить утечку памяти и другие подобные проблемы. Также есть возможность указать количество процессов, которые выполняются одновременно. Если есть только один процесс, после нескольких запросов он умрет. Решение состоит в том, чтобы запустить более одного процесса. Я использую следующие варианты:

export PHP_FCGI_CHILDREN=4
export PHP_FCGI_MAX_REQUESTS=1000

Если вы поместите эти строки в скрипт, который используете для запуска вашего php-сервера, вы обнаружите, что ваш PHP-сайт продолжает работать. :)