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

Как автоматически перезапустить php-cgi с помощью spawn-fcgi

Я запускаю nginx с php как fcgi. Он работает нормально, однако php-cgi продолжает выходить () после обработки 500 запросов. Я попытался увеличить это значение (PHP_FCGI_MAX_REQUESTS), и это сработало, но, похоже, это обходной путь. Затем я установил его в 0, и он еще не завершился (). Но я думаю, что есть причина, по которой нужно перезапустить php-cgi. На данный момент я запускаю php-cgi с spawn-fcgi: когда процесс php завершается, spawn-fcgi тоже выходит. Теперь есть способ автоматически перезапустить php (без грязных хаков вроде while [ 1 ]; do spawn-fcgi; done и т.д)?

По какой причине вы не можете перейти на PHP-FPM? Он поставляется с PHP> = 5.3, и есть патч для его включения для 5.2. Я использую его около года, и он работает совершенно стабильно, без проблем. Это приведет к исчезновению проблемы с созданием вашего процесса, поскольку PHP-FPM будет прозрачно обрабатывать уничтожение старых процессов и перезапуск новых для вас.

Причина PHP_FCGI_MAX_REQUESTS в том, что PHP случайным образом перестает отвечать на запросы после определенного их количества. Кажется, что эта ошибка могла быть частично исправлена ​​в более новых версиях, но во время тестирования 5.2.x я заметил, что это происходило несколько раз.

multiwatch был разработан для этого (чтобы перезапустить дочерние процессы, запущенные spawn-fcgi) - см. http://cgit.stbuehler.de/gitosis/multiwatch/about/