ホームページ バックエンド開発 PHPチュートリアル PHP の基礎となる動作メカニズムと動作原理の詳細な説明

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

Aug 04, 2020 pm 03:41 PM
php 基礎となる原則 動作機構

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

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

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

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

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

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

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

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

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

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

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用して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での後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

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

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

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

See all articles