ホームページ  >  記事  >  バックエンド開発  >  PHPマルチプレイヤーモジュール開発の原理分析

PHPマルチプレイヤーモジュール開発の原理分析

jacklove
jackloveオリジナル
2018-07-05 18:02:101450ブラウズ

この記事ではPHPの複数人開発の原理や注意点について詳しく解説していますので、参考にして一緒に学びましょう。

世界最高の言語として、Web の約 80% を占めており、中小企業では基本的に lnmp アーキテクチャが使用されています。ウェアハウスに 1 人または 20 人以上の開発者がいる場合、各人は異なるモジュールや機能を開発し、git などのコード バージョン管理ツールを使用して異なるブランチを開く可能性があります。おそらく、そのプロセスは、最初に完全な環境をローカルにセットアップして開発することになるでしょう。テスト環境への導入 セルフテストまたはテスターテスト後、プレリリース環境への導入 プレリリースは基本的にオンライン環境と同様であり、その後製品を受け入れます 受付完了後、オンラインで公開されています。

並行して開発されるため、複数の機能を同時に受け入れたりテストしたりする状況が発生するはずですが、このとき、プレリリース環境には誰のコードがデプロイされますか? Aの支店に切り替えるとBは受け付けられなくなります。したがって、私たちは、全員の開発プロセスが互いに影響を与えない、複数人による開発環境が実現されることを望んでいます。

PHP の動作原理

まず、PHP の動作原理を分析し、PHP の言語特性を見てみましょう。ブラウザからリクエストを開始すると、Web サーバー (Nginx、Apache など) はポート 80 または 443 をリッスンします。最も単純な Nginx 仮想ホスト構成を見てみましょう:

server {
 listen    80;
 server_name test.com;
 
 root /data/gateway/html;
 index  index.php;

 location ~ \.php$ {
  fastcgi_pass  127.0.0.1:9001; #unix:/Users/run/php-fcgi.sock;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include    fastcgi_params;
 }
}

Nginx はポート 80 をリッスンし、ユーザーがアクセスしたドメイン名が test.com であると一致する場合、対応する vhost 構成を使用します。 PHP-FPM はサーバーでサービスを開始し、ポート (9001 など) または Unix ソケットをリッスンします。Nginx はリクエストを PHP-FPM に渡し、fastcgi_pass 設定を通じて PHP コードを解析します。PHP パーサーは、index.php から解析を開始します。毎回、それを最後まで処理し、一連の論理処理を実行し、データベースやキャッシュなどのクエリを実行して、HTML などの結果を Nginx に返し、Nginx はそれをブラウザに返します。プロセスは次のとおりです。

CGI: Nginx と PHP_FPM 間のデータ交換用のプロトコルです。

FastCGI: CGI と同じ通信プロトコルですが、CGI よりも効率が最適化されています。

PHP-CGI: Nginx が提供する CGI プロトコル用の PHP のインターフェイス プログラムです。

PHP-FPM: Nginx が提供する FastCGI プロトコル用の PHP インターフェイス プログラムであり、比較的インテリジェントなタスク管理も提供します。

複数人による開発環境

PHP の原則から、PHP は実際には解釈されたスクリプトにすぎないことがわかります。言語、各リクエストはindex.phpから解析する必要があります。その後、さまざまな開発者の名前に従ってサーバー上の多くのフォルダーに名前を付け、各フォルダーでコードリポジトリのクローンを作成し、独自のブランチに切り替えることができますか?次に、Nginx に各人のディレクトリ内のインデックスを処理させます。たとえば、http://wulv.test.com/ に直接アクセスし、Nginx で wulv を取得し、root を wulv ディレクトリに設定すると、wulv ディレクトリ内のコードにアクセスできるようになります。 Nginx を次のように設定できます:

set $who www;
if ($http_who != "") {
  set $who $http_who;
}
root /data/gateway/$who/html;

URL にユーザーのディレクトリを持たせ、Nginx でそれをインターセプトし、次の場所に運ぶことができます。

##ホスト: http://wulv.test.com


パス: http://www.test.com/wulv


クエリ: http : //www.test.com?http_who=wulv


これで通常は要件を達成できますが、まだいくつかの問題があります。たとえば、ページ上の一部のリンクはハードコーディングされており、相対パスを使用してください。クリックすると、再度 www.test.com に移動するか、OAuth などのサードパーティ アプリケーションでドメイン名を確認する必要があります。ドメイン名がオンライン ドメイン名と一致しない場合、ログインできません。全然。したがって、これを実現するには、次のような他の方法が必要です。

http リクエスト ヘッダー


cookie


Modify Headers ブラウザ プラグインを使用できます。 http リクエストを変更するには、ヘッダー情報については、パラメータ http_who を wulv に設定し、Nginx で取得します。

拡張

条件が許せば、実際にゲートウェイ サーバーを作成し、構成ページで構成ページを作成できます。次回アクセスするとき、ゲートウェイは http ヘッダーを設定し、対応するサーバーにプロキシするのを直接支援します。これにより、ブラウザのプラグインをインストールする必要もなくなり、操作や製品設計がより容易になります。

#XHProf を使用した PHP パフォーマンスのボトルネックの検出に関する説明

##Laravel フレームワークのカスタム テンプレート手順の関連概要


#PHP でクイック ソートを再帰的に実装する方法の例


以上がPHPマルチプレイヤーモジュール開発の原理分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。