thttpdモジュールとしてのPHPとメモリ使用量の点でのCGI
質問
組み込み環境でphpを使用する予定です。現在のWebサーバーはthttpdです。現在、cgiとして実行するかSAPIモジュールとして実行するかという2つのオプションを検討しています。私はcgiがセキュリティの面で有利であることを知っています。しかし、phpをcgiとして使用する場合は、各リクエストのphpのインスタンスをメモリにロードする必要があります。
thttpdのSAPIモジュールとしてコンパイルしようとしましたが、リクエストの数が増えてもthttpdのメモリ使用量、特にrssが大きくならないことがわかりました。
thttpdがどのようにphpをロードするか説明できますか?一度だけロードされ、thttpdが実行されている限りメモリに常駐しますか?もしそうなら、cgiの代替としてこれを考慮するかもしれません。
マルチスレッドを実行しますか?つまり、同時に複数のhttpリクエストがある場合?または、一度に1つずつリクエストを処理しますか?
thttpdのモジュールとしてのphpの動作を説明する優れたドキュメントはありますか?
解決
thttpdの経験はありませんが、いくつかのポインタを次に示します。
- PHPエンジンはスレッドセーフですが、一部の拡張機能はそうではないため、通常はマルチスレッド環境での使用を避け、1プロセス-1リクエストメソッドを使用します
- はい、通常、webserverモジュール(Apache mod_ *のようなもの)は常駐しますが、PHPの大きなスピードバンプは、ソースファイル(またはinclude / requireを使用する場合は複数のソースファイル)を解析する必要があることです各リクエスト。解析されたバージョンのファイルをキャッシュする APC などを使用して、これを削減できます >
- FastCGIと呼ばれるプロトコルもあります。これは、基本的にモジュールとCGIソリューションのクロスオーバーです-いくつかのプロセスを起動し、各プロセスはCGI問題の単一インスタンスをホストします(PHPこの場合)、リクエストを処理するためにそれらを使用します。インスタンスはリサイクルされます(つまり、複数のリクエストを次々に処理できます)。
所属していません StackOverflow