PHP の仕組みの基本
この記事では主に PHP の動作原理の基本を紹介します。これには一定の参考値があります。今、みんなに共有しています。困っている友達は参考にしてください。
私は最近サーバーを構築し、突然ランプのように感じました。正確にはどのように機能するのでしょうか、またはどのように接続されているのでしょうか?私は普段プログラムを書くだけで、プログラム間の動作原理について考えたことはありません。
PHP の基礎となる動作原理
図 1 PHP の構造
写真からわかるように、PHP は下から上まで 4 層のシステムです。
①Zend エンジン
Zend は純粋な C で実装されており、PHP のコア部分です。 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 の分析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: サーバー側プログラミング言語に属し、php_module モジュールを通じて Apache と関連付けられます
④Mysql およびその他の Web サービス: アプリケーション サービスに属し、PHP の拡張プラグイン モジュールを通じて mysql に関連付けられます。
Android システム アーキテクチャ図
比較ランプと Android のアーキテクチャ図、ランプのアーキテクチャに少し似ているようです、Android はわかりませんが、少し似ているように感じます。専門家の方は違いを指摘していただけます。非常に感謝します。
上から下:
Android アーキテクチャ -- ------------説明--------LAMP アーキテクチャ
1. アプリケーション --------特定のアプリケーション ---- -web アプリケーション
2. アプリケーション フレームワーク ----java-------- ----PHP 言語とライブラリ
3. システム ランタイム ライブラリ:-- --仮想マシン--------WEB サーバー
⒋Linux カーネル:---動作中システム-----L
ランプ アーキテクチャにおけるランプとコンピュータ内部の関係
CPU は工場出荷時、ハードディスクは大きな倉庫、メモリは通常の転送センター、仮想メモリは一時転送センターです
Php言語はzendによって機械語にコンパイルされ、cpuが動作します
データベースの動作「Web サイトのボトルネックは、I/O 操作と機械的な動作です。つまり、Web サイトのボトルネックは、ハードディスクへの読み取りと書き込みによって引き起こされます。解決策は、I/O 操作の数を減らすことです。バッファリング技術の使用は、データ操作はメンキャッシュに配置され、それが一定の大きさに達すると、すぐにデータベースに書き込まれます。メンキャッシュは、リレーショナル データではなく、キーと値の関係
# に属します。これもこの概念に基づいて構築されており、キーと値の関係にも属します
頻繁な読み取り操作-----mencache に入れます
もっと読んで、書く量を減らします- ---nosqlに入れてください----- ・読み込み機能が強力です!
上記がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
PHP ソース コード差別化プラットフォーム MVC 構造の紹介
以上がPHP の仕組みの基本の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

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

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

ホットトピック









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

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。
