ホームページ  >  記事  >  バックエンド開発  >  PHP の基礎となる動作メカニズムと動作原理の詳細な説明

PHP の基礎となる動作メカニズムと動作原理の詳細な説明

coldplay.xixi
coldplay.xixi転載
2020-08-04 15:41:113098ブラウズ

PHP の基礎となる動作メカニズムと動作原理の詳細な説明

最近サーバーをセットアップしたのですが、突然、ランプがどのように機能するのか、またはどのように接続されているのかを感じました。私は普段プログラムを書くだけで、プログラム間の動作原理について考えたことはありません。

#関連する学習の推奨事項: PHP プログラミングの入門から熟練度まで

図 1 PHP の構造

以下からわかるように、写真、php 下から上への 4 層システムです。

①Zend エンジンZend は純粋な C で実装されており、PHP のコア部分であり、PHP コード (語彙、語彙、プロセス) 実行可能なオペコードを処理し、対応する処理メソッドを実装し、基本的なデータ構造 (ハッシュテーブル、oo など)、メモリ割り当てと管理を実装し、外部呼び出しに対応する API メソッドを提供するすべての中核です。周辺機能はすべてzendを中心に実装されています。

②拡張機能

zendエンジンを中心に、共通の各種組み込み関数(配列系列など)や標準ライブラリなど、さまざまな基本サービスをコンポーネントベースで提供する拡張機能です。これを実現するために、ユーザーは機能拡張、パフォーマンスの最適化、その他の目的を達成するために、必要に応じて独自の拡張機能を実装することもできます (たとえば、現在 Tieba で使用されている PHP 中間層やリッチ テキスト解析は、拡張機能の典型的なアプリケーションです)。

③Sapi

Sapi の正式名は Server Application Programming Interface で、サーバー アプリケーション プログラミング インターフェイスです。Sapi を使用すると、PHP は一連のフック関数を通じて周辺データと対話できます。これは PHP の非常にエレガントで、成功した設計は、SAPI を通じて PHP 自体を上位層アプリケーションから切り離し、分離することに成功しました。PHP は、異なるアプリケーションとの互換性を考慮する必要がなくなり、アプリケーション自体も、その特性に応じて異なる処理方法を実装できます。これについては、後ほど sapi の章で紹介します。

④上位層アプリケーション

これは、私たちが通常作成する PHP プログラムです。さまざまな sapi メソッドを通じて、さまざまなアプリケーション モードを取得できます。 webserver コマンドラインからスクリプトとして適用、実行など。

アーキテクチャのアイデア:

エンジン (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

注: d:/php/php5apache2.dll は、Windows 環境の php5apache2.dll ファイルのインストール場所です。

これら 2 つの構成は、サフィックスとして php を使用して今後受信される URL ユーザー リクエストは、処理のために php5_module モジュール (mod_php5.so/php5apache2.dll) を呼び出す必要があることを Apache サーバーに伝えます。

#Apache のライフサイクル

##Apache のリクエスト処理プロセス

Apache リクエスト処理サイクルの詳細な説明

Apache リクエスト処理サイクルの 11 段階は次のとおりです。完了しました 何か? 1. 読み取りリクエスト後のフェーズ

通常のリクエスト処理プロセスでは、これはモジュールがフックを挿入できる最初のステージです。この段階は、リクエストの処理を非常に早い段階で開始したいモジュールに利用できます。

2. URI 変換ステージ

このステージにおける Apache の主な仕事は、要求された URL をローカル ファイル システムにマッピングすることです。モジュールはこの段階でフックを挿入して、独自のマッピング ロジックを実行できます。 mod_alias はこのフェーズを使用して動作します。

3. ヘッダー解析ステージ
このステージにおける Apache の主な作業: リクエストのヘッダーをチェックします。モジュールはリクエスト処理フローのどの時点でもリクエスト ヘッダーをチェックするタスクを実行できるため、このフックが使用されることはほとんどありません。 mod_setenvif はこのフェーズを使用して動作します。

4. アクセス制御フェーズ
このフェーズにおける Apache の主な作業: 要求されたリソースへのアクセスが設定ファイルに従って許可されているかどうかを確認します。 Apache の標準ロジックは、許可ディレクティブと拒否ディレクティブを実装します。 mod_authz_host はこのフェーズを使用して動作します。

5. 認証段階
この段階での Apache の主な作業は、設定ファイルに設定されたポリシーに従ってユーザーを認証し、ユーザー名領域を設定することです。モジュールはこの段階でフックを挿入して、認証方法を実装できます。

6. 認可フェーズ
このフェーズにおける Apache の主な作業: 認証されたユーザーが設定ファイルに従って要求された操作の実行を許可されているかどうかを確認します。モジュールはこの段階でフックを挿入して、ユーザー権限管理メソッドを実装できます。

7. MIME タイプ チェック ステージ
このステージにおける Apache の主な作業: 要求されたリソースの MIME タイプの関連ルールに従って、使用するコンテンツ処理機能を決定します。標準モジュール mod_negotiation および mod_mime はこのフックを実装します。

8. FixUp ステージ
これは、モジュールがコンテンツ ジェネレーターの前に必要な処理を実行できるようにする一般的なステージです。 Post_Read_Request と同様に、これはあらゆる情報を取得できるフックであり、最も一般的に使用されるフックでもあります。

9. 応答ステージ
このステージにおける Apache の主な仕事は、クライアントに返されるコンテンツを生成し、クライアントに適切な応答を送信する責任を負います。この段階はプロセス全体の中核部分です。

10. ロギングフェーズ
このフェーズにおける Apache の主な作業: 応答がクライアントに送信された後のトランザクションの記録です。モジュールは、Apache の標準ログを変更または置き換えることができます。

11. クリーンアップ フェーズ
このフェーズにおける Apache の主な作業: ファイルやディレクトリの処理やソケットのクローズなど、このリクエスト トランザクションの完了後に残された環境をクリーンアップします。 . Apache にとって初めてのこと リクエスト処理の最終段階。

LAMP アーキテクチャ:

##下から上への 4 層:

①liunx 所属オペレーティング システムの最下位層に接続されます

②apache サーバー、セカンダリ サーバーに属し、Linux および PHP と通信します

③php: サーバー側プログラミング言語に属し、Apache に関連付けられますphp_module モジュール経由

##④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 に入れてください------読み取り関数は非常に強力です。

以上がPHP の基礎となる動作メカニズムと動作原理の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。