最近サーバーをセットアップしたのですが、突然、ランプがどのように機能するのか、またはどのように接続されているのかを感じました。私は普段プログラムを書くだけで、プログラム間の動作原理について考えたことはありません。
#関連する学習の推奨事項: PHP プログラミングの入門から熟練度まで
図 1 PHP の構造
以下からわかるように、写真、php 下から上への 4 層システムです。②拡張機能 zendエンジンを中心に、共通の各種組み込み関数(配列系列など)や標準ライブラリなど、さまざまな基本サービスをコンポーネントベースで提供する拡張機能です。これを実現するために、ユーザーは機能拡張、パフォーマンスの最適化、その他の目的を達成するために、必要に応じて独自の拡張機能を実装することもできます (たとえば、現在 Tieba で使用されている PHP 中間層やリッチ テキスト解析は、拡張機能の典型的なアプリケーションです)。 ③SapiSapi の正式名は Server Application Programming Interface で、サーバー アプリケーション プログラミング インターフェイスです。Sapi を使用すると、PHP は一連のフック関数を通じて周辺データと対話できます。これは PHP の非常にエレガントで、成功した設計は、SAPI を通じて PHP 自体を上位層アプリケーションから切り離し、分離することに成功しました。PHP は、異なるアプリケーションとの互換性を考慮する必要がなくなり、アプリケーション自体も、その特性に応じて異なる処理方法を実装できます。これについては、後ほど sapi の章で紹介します。④上位層アプリケーションこれは、私たちが通常作成する PHP プログラムです。さまざまな sapi メソッドを通じて、さまざまなアプリケーション モードを取得できます。 webserver コマンドラインからスクリプトとして適用、実行など。①Zend エンジンZend は純粋な C で実装されており、PHP のコア部分であり、PHP コード (語彙、語彙、プロセス) 実行可能なオペコードを処理し、対応する処理メソッドを実装し、基本的なデータ構造 (ハッシュテーブル、oo など)、メモリ割り当てと管理を実装し、外部呼び出しに対応する API メソッドを提供するすべての中核です。周辺機能はすべてzendを中心に実装されています。
アーキテクチャのアイデア:
エンジン (Zend) コンポーネント (ext) モデルは内部結合を削減します中間層 (sapi) は Web サーバーを分離しますそしてphp ***************************************** ****** ******************************php が車の場合、 車の骨格 phpそのものです
Zendは車のエンジン(エンジン)ですExt以下の各コンポーネントは車の車輪です
Sapiは道路とみなすことができ、車はさまざまな種類の道路を走行できますPHP プログラムの実行は、車が道路を走るのと似ています。
したがって、次のものが必要です: 優れたパフォーマンスのエンジン、適切なホイール、正しい滑走路
Apache と php の関係
Apache for php分析は多くのモジュールの中からphpモジュールを通じて完了します。
#最終的に php を Apache システムに統合するには、Apache に必要な設定をいくつか行う必要があります。ここではphpのSAPI動作モードmod_php5を例に説明しますが、SAPIの概念については後ほど詳しく説明します。 インストールするバージョンが Apache2 と Php5 であると仮定すると、Apache のメイン設定ファイル http.conf を編集し、次の行を追加する必要があります。
Unix/Linux 環境の場合:
LoadModule php5_module modules/mod_php5.so AddType application/x-httpd-php .php
注: modules/mod_php5.so は、X システム環境における mod_php5.so ファイルのインストール場所です。
Windows 環境の場合:LoadModule php5_module d:/php/php5apache2.dll AddType application/x-httpd-php .php
#Apache のライフサイクル
##Apache のリクエスト処理プロセス
Apache リクエスト処理サイクルの詳細な説明
Apache リクエスト処理サイクルの 11 段階は次のとおりです。完了しました 何か? 1. 読み取りリクエスト後のフェーズ
通常のリクエスト処理プロセスでは、これはモジュールがフックを挿入できる最初のステージです。この段階は、リクエストの処理を非常に早い段階で開始したいモジュールに利用できます。 2. URI 変換ステージこのステージにおける Apache の主な仕事は、要求された URL をローカル ファイル システムにマッピングすることです。モジュールはこの段階でフックを挿入して、独自のマッピング ロジックを実行できます。 mod_alias はこのフェーズを使用して動作します。 3. ヘッダー解析ステージ 4. アクセス制御フェーズ 5. 認証段階 6. 認可フェーズ 7. MIME タイプ チェック ステージ 8. FixUp ステージ 9. 応答ステージ 10. ロギングフェーズ 11. クリーンアップ フェーズ LAMP アーキテクチャ: ##④mysql およびその他の Web サービス: アプリケーション サービスに属し、PHP の拡張プラグイン モジュールを通じて mysql に関連付けられます Android システム アーキテクチャ図ランプと Android アーキテクチャ 写真を比較すると、ランプ アーキテクチャにいくらか似ているように見えます。Android についてはわかりませんが、少し似ているように感じます。専門家は違いを指摘できます。大変感謝しております。 上から下へ 次へ: Android アーキテクチャ--------------説明--------LAMP アーキテクチャ 1. アプリケーション----- ---特定のアプリケーション--------Web アプリケーション 2. アプリケーション フレームワーク- ---java-------------PHP 言語とライブラリ 3. システム ランタイム ライブラリ:----仮想マシン--------WEB サーバー ⒋Linux カーネル:---オペレーティング システム-----ランプ アーキテクチャ L CPU は工場、ハードディスクは大倉庫、メモリは通常の転送センター、仮想メモリは一時転送センター Php 言語zend によって機械語にコンパイルされ、CPU が動作します。 データベースの操作は、I/O 操作と機械的な動作、つまり Web サイトの操作です。ボトルネックは、読み取りとハードディスクへの書き込みです。解決策は、I/O 操作の数を減らし、バッファリング テクノロジを使用することです。つまり、データ操作はメンキャッシュに配置されます。データ操作が一定の桁に達すると、データベースに書き込まれます。メンキャッシュはキーに属します --値の関係 非リレーショナル データもこの概念に基づいて構築され、キーと値の関係に属します 頻繁な読み取り操作-------mencache に入れてください もっと読んで、書く量を減らしてください----nosql に入れてください------読み取り関数は非常に強力です。
このステージにおける Apache の主な作業: リクエストのヘッダーをチェックします。モジュールはリクエスト処理フローのどの時点でもリクエスト ヘッダーをチェックするタスクを実行できるため、このフックが使用されることはほとんどありません。 mod_setenvif はこのフェーズを使用して動作します。
このフェーズにおける Apache の主な作業: 要求されたリソースへのアクセスが設定ファイルに従って許可されているかどうかを確認します。 Apache の標準ロジックは、許可ディレクティブと拒否ディレクティブを実装します。 mod_authz_host はこのフェーズを使用して動作します。
この段階での Apache の主な作業は、設定ファイルに設定されたポリシーに従ってユーザーを認証し、ユーザー名領域を設定することです。モジュールはこの段階でフックを挿入して、認証方法を実装できます。
このフェーズにおける Apache の主な作業: 認証されたユーザーが設定ファイルに従って要求された操作の実行を許可されているかどうかを確認します。モジュールはこの段階でフックを挿入して、ユーザー権限管理メソッドを実装できます。
このステージにおける Apache の主な作業: 要求されたリソースの MIME タイプの関連ルールに従って、使用するコンテンツ処理機能を決定します。標準モジュール mod_negotiation および mod_mime はこのフックを実装します。
これは、モジュールがコンテンツ ジェネレーターの前に必要な処理を実行できるようにする一般的なステージです。 Post_Read_Request と同様に、これはあらゆる情報を取得できるフックであり、最も一般的に使用されるフックでもあります。
このステージにおける Apache の主な仕事は、クライアントに返されるコンテンツを生成し、クライアントに適切な応答を送信する責任を負います。この段階はプロセス全体の中核部分です。
このフェーズにおける Apache の主な作業: 応答がクライアントに送信された後のトランザクションの記録です。モジュールは、Apache の標準ログを変更または置き換えることができます。
このフェーズにおける Apache の主な作業: ファイルやディレクトリの処理やソケットのクローズなど、このリクエスト トランザクションの完了後に残された環境をクリーンアップします。 . Apache にとって初めてのこと リクエスト処理の最終段階。
以上がPHP の基礎となる動作メカニズムと動作原理の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。