質問

組み込み環境で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この場合)、リクエストを処理するためにそれらを使用します。インスタンスはリサイクルされます(つまり、複数のリクエストを次々に処理できます)。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top