web-dev-qa-db-ja.com

spawn-fcgiを使用してphp-cgiを自動的に再起動する方法

Phpをfcgiとしてnginxを実行しています。正常に動作していますが、php-cgiは500のリクエストを処理した後もexit()を続けます。その値(PHP_FCGI_MAX_REQUESTS)を増やしてみましたが、うまくいきましたが、それは回避策のようです。次に、それを0に設定しましたが、まだexit()していません。しかし、php-cgiを再起動する必要があるのには理由があると思います。現時点では、spawn-fcgiを指定してphp-cgiを実行しています。phpプロセスが終了すると、spawn-fcgiも終了します。さて、phpを自動的に再起動する方法はありますか(while [ 1 ]; do spawn-fcgi; doneなどの汚いハックなしで)?

1
mrm8

PHP-FPMに切り替えられない理由はありますか? PHP> = 5.3が付属しており、5.2で有効にするパッチがあります。約1年間使用していますが、問題なく完全に安定しています。これPHP-FPMは古いプロセスの強制終了と新しいプロセスの再起動を透過的に処理するため、プロセスの生成の問題が解消されます。

PHP_FCGI_MAX_REQUESTSの理由は、PHPが特定の数のリクエストの後にランダムにリクエストへの応答を停止するためです。このバグは新しいバージョンで部分的に修正されたようですが、5.2のテスト中です。 x私はそれが複数回起こったことに気づきました。

2
devicenull

multiwatchはこのために設計されました(spawn-fcgiによって実行されている子プロセスを再起動するため) http://cgit.stbuehler.de/gitosis/multiwatch/about/ を参照してください

0
sendmoreinfo