Docker || Wordpress || PHP

1467 ワード

WebサーバとCGI
まず、CGIは何をしていますか?CGIはウェブサーバから伝達されるデータが標準フォーマットであることを保証するため、CGIプログラムの作成者を便利にする.
Webサーバ(例えばnginx)はコンテンツの配布者にすぎない.たとえば、/index.htmlが要求されると、web serverはファイルシステムに行ってこのファイルを見つけ、ブラウザに送信します.ここで配布されるのは静的データです.はい、もし今要求しているのが/index.phpで、プロファイルによると、nginxはこれが静的ファイルではないことを知っていて、PHP解析器を探して処理する必要があるならば、彼はこの要求を簡単に処理してPHP解析器に渡します.NginxはどのようなデータをPHP解析器に伝えますか?urlはあるでしょう.検索文字列もあるでしょう.POSTデータもあります.HTTPヘッダは少なくないでしょう.はい、CGIはどのデータを転送し、どのようなフォーマットで後方にこの要求を処理するかを規定するプロトコルです.PHPコードで使用しているユーザーがどこから来たのかよく考えてみてください.
Webサーバが/index.phpというリクエストを受信すると、対応するCGIプログラムが起動します.ここがPHPの解析器です.次にPHP解析器がphpを解析する.iniファイルは、実行環境を初期化し、要求を処理し、処理後の結果を所定CGIで所定のフォーマットで返し、プロセスを終了します.Webサーバは、結果をブラウザに返します.
はい、CGIはプロトコルで、プロセスとかは関係ありません.fastcgiは何ですか?Fastcgiは、CGIプログラムのパフォーマンスを向上させるために使用されます.
パフォーマンスを向上させるには、CGIプログラムのパフォーマンスの問題はどこにあるのでしょうか.「PHP解析器はphp.iniファイルを解析し、実行環境を初期化します」というのがここです.標準的なCGIはリクエストごとにこれらのステップを実行します(暇ではありません!プロセスを起動するのは疲れています!)、だから、時間ごとに処理する時間が長くなります.これは明らかに不合理ですね.ではFastcgiはどうやって作ったのでしょうか?まず、Fastcgiはまずマスターを起動し、プロファイルを解析し、実行環境を初期化してから、複数のworkerを起動します.リクエストが来ると、masterはworkerに渡され、すぐに次のリクエストを受け入れることができます.このように繰り返しの労働を避けることができて、効率は自然に高いです.また、workerが足りない場合、masterは構成に応じていくつかのworkerを起動して待つことができます.もちろん空きworkerが多すぎると、少し止まってしまい、パフォーマンスが向上し、リソースも節約できます.これがfastcgiのプロセス管理です.
# Docker   
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)