PHP の基礎となる原理の例の詳細な説明
私は長い間 LAMP または LNMP を使ってきましたが、ランプはどのように機能するのでしょうか? またはランプはどのように接続されているのでしょうか? 私は通常プログラムを書くだけで、その動作原理についてはほとんど考えません。この記事では主に 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を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のライフサイクル
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. CleanUp フェーズ
このフェーズにおける Apache の主な作業: ファイルやディレクトリの処理やソケットのクローズなど、このリクエスト トランザクションの完了後に残された環境をクリーンアップします。これが処理される最後のリクエストです。 Apache ステージによる。
LAMPアーキテクチャ:
下から上へ4つの層:
①liunxはオペレーティングシステムの最下層に属します
②apacheサーバーはセカンダリサーバーに属し、LinuxおよびPHPと通信します
③php:に属しますphp_module モジュールを介してサーバー側プログラミング言語に接続 apache
④mysql およびその他の Web サービスに関連付けられています: アプリケーション サービスに属し、PHP の拡張プラグイン モジュールを通じて mysql に関連付けられています
Android システム アーキテクチャ図
を比較してくださいランプと Android のアーキテクチャ図。私は Android を理解していないと思いますが、違いを指摘していただければ幸いです。
上から下へ:
②拡張機能
php が車なら、
車のフレームワークはphpそのものです
Zendは車のエンジンです
Ext以下のさまざまなコンポーネントは車の車輪です
Sapiは道路とみなすことができ、車はさまざまな種類の道路で走行できます道路
PHP プログラムの実行は、道路を走る車のようなものです。
したがって、必要なものは次のとおりです: 優れたパフォーマンスのエンジン + 適切なホイール + 正しい滑走路
Apache と php の関係
Apache による 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のライフサイクル
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. CleanUp フェーズ
このフェーズにおける Apache の主な作業: ファイルやディレクトリの処理やソケットのクローズなど、このリクエスト トランザクションの完了後に残された環境をクリーンアップします。これが処理される最後のリクエストです。 Apache ステージによる。
LAMPアーキテクチャ:
下から上へ4つの層:
①liunxはオペレーティングシステムの最下層に属します
②apacheサーバーはセカンダリサーバーに属し、LinuxおよびPHPと通信します
③php:に属しますphp_module モジュールを介して、サーバー側プログラミング言語に接続します。 apache に関連する
④mysql とその他の Web サービス: アプリケーション サービスに属し、PHP の Extensions プラグイン モジュールを通じて mysql に関連付けられています。
Android システム アーキテクチャ図
ランプと Android のアーキテクチャ図を比較すると、ランプ アーキテクチャとある程度似ているように見えます。 Android については理解できませんが、専門家が違いを指摘してくれると幸いです
Android アーキテクチャ——————説明——。 ——LAMPアーキテクチャ
1. アプリケーション————特定のアプリケーション——–Webアプリケーション
2. アプリケーションフレームワーク——java————-PHP言語とライブラリ
3. システムランタイムライブラリ: —仮想マシン— —WEBサーバー
⒋Linuxカーネル: —オペレーティングシステム— —ランプアーキテクチャの-L
関連する推奨事項:
PHPの基盤となる動作メカニズムと原則の説明PHPの基盤となる分析: コピーオンについて牛 牛 複数形 win color フォーラム ww7349cow 日本の牛 牛の乳石を書く
php_PHP チュートリアルの基礎となるメカニズムを深く理解する
以上がPHP の基礎となる原理の例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
