検索
ホームページバックエンド開発PHPチュートリアルPHP の基礎となる原理の例の詳細な説明

PHP の基礎となる原理の例の詳細な説明

Mar 14, 2018 pm 02:35 PM
php詳しい説明

私は長い間 LAMP または LNMP を使ってきましたが、ランプはどのように機能するのでしょうか? またはランプはどのように接続されているのでしょうか? 私は通常プログラムを書くだけで、その動作原理についてはほとんど考えません。この記事では主に PHP の基礎となる原理の例を紹介します。説明、皆さんのお役に立てば幸いです。

PHPの基本的な動作原理

PHP の基礎となる原理の例の詳細な説明
図1 PHPの構造

図からわかるように、PHPは下から上まで4層のシステムです

①Zendエンジン

Zendは純粋なCで実装されており、 PHP パーツの中核であり、PHP コード (字句解析、構文解析、その他のコンパイル プロセス) を実行可能なオペコード処理に変換し、対応する処理メソッドを実装し、基本的なデータ構造 (ハッシュテーブル、OO など)、メモリの割り当てと管理を実装し、外部呼び出しには対応する API メソッドが提供されており、すべての周辺機能が zend を中心に実装されています。

②拡張機能

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

③Sapi

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

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

これは私たちが普段書くPHPプログラムです。Webサーバーを介してWebアプリケーションを実装したり、コマンドでスクリプトを使用したりするなど、さまざまなSAPIメソッドを通じてさまざまなアプリケーションモードを取得できます。ラインの走り方など。

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

エンジン (Zend) + コンポーネント (ext) モデルにより、内部結合が軽減されます

中間層 (sapi) が Web サーバーと php を分離します


php が車であれば、

そのフレームワーク車はPHPそのものです

Zendは車のエンジンです

Ext以下のさまざまなコンポーネントは車の車輪です

Sapiは道路とみなすことができ、車はさまざまな種類の道路を走行できます

そしてPHP プログラムの実行 道路を走っているのはただの車です。

したがって、必要なものは次のとおりです: 優れたパフォーマンスのエンジン + 適切なホイール + 正しい滑走路

Apache と php の関係

Apache による php の解析は、多くのモジュールの中の 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

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

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

Apacheのライフサイクル

PHP の基礎となる原理の例の詳細な説明
Apacheのリクエスト処理プロセス
PHP の基礎となる原理の例の詳細な説明

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. CleanUp フェーズ

このフェーズにおける Apache の主な作業: ファイルやディレクトリの処理やソケットのクローズなど、このリクエスト トランザクションの完了後に残された環境をクリーンアップします。これが処理される最後のリクエストです。 Apache ステージによる。

LAMPアーキテクチャ:

PHP の基礎となる原理の例の詳細な説明
下から上へ4つの層:

①liunxはオペレーティングシステムの最下層に属します

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

③php:に属しますphp_module モジュールを介してサーバー側プログラミング言語に接続 apache

④mysql およびその他の Web サービスに関連付けられています: アプリケーション サービスに属し、PHP の拡張プラグイン モジュールを通じて mysql に関連付けられています

Android システム アーキテクチャ図

を比較してくださいランプと Android のアーキテクチャ図。私は Android を理解していないと思いますが、違いを指摘していただければ幸いです。

PHP の基礎となる原理の例の詳細な説明上から下へ:

Androidアーキテクチャ——————説明————LAMPアーキテクチャ

1. アプリケーション— —-特定のアプリケーション—-Webアプリケーション

2. アプリケーションフレームワーク——Java— ———-PHP言語とライブラリ

3. システムランタイムライブラリ: —仮想マシン——WEBサーバー

⒋Linuxカーネル: —オペレーティングシステム——-ランプアーキテクチャのL

私は長い間LAMPまたはLNMPを使用してきましたでは、ランプはどのように機能するのでしょうか? ランプはどのように接続されているのでしょうか? 私は通常、プログラムを書くだけで、ランプ間の関係について考えることはほとんどありません。図、PHPは下から上への4層システムです

①Zendエンジン

Zendは純粋なCで実装されており、PHPのコア部分であり、PHPコード(字句解析、構文解析、その他のコンパイルプロセス)を実行可能なオペコードに変換します処理と対応する処理メソッドの実装、基本的なデータ構造 (ハッシュテーブル、OO など) の実装、メモリ割り当てと管理、および外部呼び出し用の対応する API メソッドの提供が、すべての周辺機能の中心です。

PHP の基礎となる原理の例の詳細な説明②拡張機能

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

③Sapi

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

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

これは私たちが普段書くPHPプログラムです。Webサーバーを介してWebアプリケーションを実装したり、コマンドでスクリプトを使用したりするなど、さまざまなSAPIメソッドを通じてさまざまなアプリケーションモードを取得できます。ラインの走り方など。

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

エンジン (Zend) + コンポーネント (ext) モデルにより、内部結合が軽減されます

中間層 (sapi) が Web サーバーと php を分離します

php が車なら、

車のフレームワークはphpそのものです

Zendは車のエンジンです

Ext以下のさまざまなコンポーネントは車の車輪です

Sapiは道路とみなすことができ、車はさまざまな種類の道路で走行できます道路

PHP プログラムの実行は、道路を走る車のようなものです。

したがって、必要なものは次のとおりです: 優れたパフォーマンスのエンジン + 適切なホイール + 正しい滑走路

Apache と php の関係

Apache による php の解析は、多くのモジュールの中の 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

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

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

Apacheのライフサイクル

PHP の基礎となる原理の例の詳細な説明
Apacheのリクエスト処理プロセス
PHP の基礎となる原理の例の詳細な説明

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. CleanUp フェーズ

このフェーズにおける Apache の主な作業: ファイルやディレクトリの処理やソケットのクローズなど、このリクエスト トランザクションの完了後に残された環境をクリーンアップします。これが処理される最後のリクエストです。 Apache ステージによる。

LAMPアーキテクチャ:

PHP の基礎となる原理の例の詳細な説明
下から上へ4つの層:

①liunxはオペレーティングシステムの最下層に属します

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

③php:に属しますphp_module モジュールを介して、サーバー側プログラミング言語に接続します。 apache に関連する

④mysql とその他の Web サービス: アプリケーション サービスに属し、PHP の Extensions プラグイン モジュールを通じて mysql に関連付けられています。

Android システム アーキテクチャ図

ランプと Android のアーキテクチャ図を比較すると、ランプ アーキテクチャとある程度似ているように見えます。 Android については理解できませんが、専門家が違いを指摘してくれると幸いです

Android アーキテクチャ——————説明——。 ——LAMPアーキテクチャPHP の基礎となる原理の例の詳細な説明
1. アプリケーション————特定のアプリケーション——–Webアプリケーション

2. アプリケーションフレームワーク——java————-PHP言語とライブラリ

3. システムランタイムライブラリ: —仮想マシン— —WEBサーバー

⒋Linuxカーネル: —オペレーティングシステム— —ランプアーキテクチャの-L

関連する推奨事項:

PHPの基盤となる動作メカニズムと原則の説明

PHPの基盤となる分析: コピーオンについて牛 牛 複数形 win color フォーラム ww7349cow 日本の牛 牛の乳石を書く

php_PHP チュートリアルの基礎となるメカニズムを深く理解する

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

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPおよびPython:さまざまなパラダイムが説明されていますPHPおよびPython:さまざまなパラダイムが説明されていますApr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPython:彼らの歴史を深く掘り下げますPHPとPython:彼らの歴史を深く掘り下げますApr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPとPythonの選択:ガイドPHPとPythonの選択:ガイドApr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとフレームワーク:言語の近代化PHPとフレームワーク:言語の近代化Apr 18, 2025 am 12:14 AM

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

PHPの影響:Web開発などPHPの影響:Web開発などApr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?Apr 17, 2025 am 12:24 AM

PHPでは、クローンキーワードを使用してオブジェクトのコピーを作成し、\ _ \ _クローンマジックメソッドを使用してクローン動作をカスタマイズします。 1.クローンキーワードを使用して浅いコピーを作成し、オブジェクトのプロパティをクローン化しますが、オブジェクトのプロパティはクローニングしません。 2。\ _ \ _クローン法は、浅いコピーの問題を避けるために、ネストされたオブジェクトを深くコピーできます。 3.クローニングにおける円形の参照とパフォーマンスの問題を避けるために注意し、クローニング操作を最適化して効率を向上させます。

PHP対Python:ユースケースとアプリケーションPHP対Python:ユースケースとアプリケーションApr 17, 2025 am 12:23 AM

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール