検索

phpの仕組みを詳しく解説

Mar 15, 2018 pm 01:05 PM
php原理詳しい説明

1. すべての PHP アプリケーションは、WEB サーバー (IIS、Nginx、Apache など) と PHP エンジン プログラムの解釈と実行を通じて完成します。 作業プロセス:

(1) ユーザーがブラウザのアドレスにアクセスする PHP を入力するとき。次に、ページ ファイル名によって Web リクエストがトリガーされ、そのリクエストが WEB サーバーに送信されます。

(2) WEBサーバーはこのリクエストを受け付け、サフィックスに基づいてPHPリクエストであると判断し、ユーザーがアクセスしたいPHPアプリケーションをハードディスクやメモリから呼び出し、PHPエンジンに送信します。プログラム。

(3) PHPエンジンプログラムは、WEBサーバーから送信されたファイルを最初から最後までスキャンし、コマンドに従ってバックグラウンドで読み込み、データを処理し、対応するHTMLページを動的に生成します。

(4) PHP エンジンは HTML ページを生成し、WEB サーバーに返します。次に、WEB サーバーは HTML ページをクライアントのブラウザーに返します。

2. PHP 動作モード:

1) CGI 共通ゲートウェイインターフェイス)

2) fast-cgi 常駐 (ロングライブ) CGI

3) cli コマンドライン操作 (コマンドライン) インターフェイス)

4) Webモジュールモード(ApacheなどのWebサーバーで動作するモジュールモード)

補足説明:

1) モジュールモード:

モジュールモードはmod_php5モジュールの形で統合されます この時、mod_php5モジュールの役割を受け取ります。 Apache によって渡された PHP ファイル リクエストは、これらのリクエストを処理し、処理された結果を Apache に返します。 Apache が起動する前に設定ファイルで PHP モジュール (mod_php5) を設定すると、PHP モジュールは apache2 の ap_hook_post_config フックを登録し、Apache が PHP ファイルに対するリクエストの受け入れを開始したときにこのモジュールを起動します。

この起動時のロード方法に加えて、Apache のモジュールは実行時に動的にロードすることができます。これは、ソース コードを再コンパイルすることなく、またはサーバーをまったく停止せずにサーバーの機能を拡張できることを意味します。必要なのは、シグナル HUP または AP_SIG_GRACEFUL をサーバーに送信して、モジュールをリロードするようにサーバーに通知することだけです。ただし、動的にロードする前に、モジュールをダイナミック リンク ライブラリにコンパイルする必要があります。このときのダイナミックロードとは、ダイナミックリンクライブラリをロードすることです。 Apache のダイナミック リンク ライブラリの処理は mod_so モジュールによって完了するため、mod_so モジュールは動的にロードできず、Apache のコアに静的にコンパイルすることしかできません。これは、Apache とともに起動されることを意味します。

2) Nginx での PHP 実行モード (Nginx+ PHP-FPM)

詳細については、nginx + php の原理セクションを参照してください

補足:

1. cgi、fast-cgi プロトコル

cgi の歴史

CGI の正式名は「Common Gateway Interface」です。これは、HTTP サーバーが自分のマシンまたは他のマシン上のプログラムと「通信」するために使用するツールです。プログラムはネットワーク サーバー上で実行する必要があります。 CGI は、標準入力、出力、および環境変数を備えている言語であれば、どの言語でも作成できます。 php、perl、tclなど。

初期のウェブサーバーはhtmlなどの静的ファイルのみを処理していましたが、テクノロジーの発展に伴い、phpなどの動的言語が登場しました。ウェブサーバーがそれを処理できません。どうすればよいですか?次に、PHP インタープリターに処理させます。しかし、php インタープリターはどのようにして Web サーバーと通信するのでしょうか?

異なる言語インタプリタ(php、pythonインタプリタなど)とウェブサーバー間の通信の問題を解決するために、cgiプロトコルが登場しました。 CGI プロトコルに従ってプログラムを作成する限り、言語インタープリターと Web サーバー間の通信を実現できます。 php-cgiプログラムなど。

fast-cgi の改良点

cgi プロトコルにより、php インタプリタとウェブサーバー間の通信の問題が解決され、ウェブサーバーは最終的に動的言語を処理できるようになりました。ただし、Web サーバーはリクエストを受信するたびに CGI プロセスをフォークし、リクエストの完了後にプロセスを強制終了します。リクエストが 10,000 件ある場合、php-cgi プロセスを 10,000 回フォークして強制終了する必要があります。それが資源の無駄だと感じたことはありますか?その結果、cgi の改良版、fast-cgi が登場しました。

fast-cgi は、各リクエストの処理後にプロセスを強制終了しませんが、プロセスが一度に複数のリクエストを処理できるようにプロセスを保持します。このようにして、毎回プロセスを再フォークする必要がなくなり、効率が大幅に向上します。 FastCGI は、言語に依存しないスケーラブルなアーキテクチャの CGI オープン拡張機能であり、その主な動作は CGI インタプリタ プロセスをメモリ内に保持することで、より高いパフォーマンスを実現します。ご存知のとおり、CGI インタープリタの繰り返しロードが CGI パフォーマンス低下の主な原因です。CGI インタープリタがメモリ内に残り、FastCGI プロセス マネージャーのスケジューリングを受け入れる場合、良好なパフォーマンス、スケーラビリティ、フェイルオーバー機能などが提供されます。

2. php-fpm とは何ですか?

PHP-FPM は、PHP でのみ使用される PHP FastCGI マネージャーです。 PHP-FPM は実際には PHP ソース コードのパッチであり、FastCGI プロセス管理を PHP パッケージに統合するように設計されています。 PHP-FPM は、メモリとプロセスを効果的に制御し、PHP 設定をスムーズにリロードできる、より優れた PHP プロセス管理方法を提供します。
プロセスにはマスタープロセスとワーカープロセスが含まれます。
ポートをリッスンして Web サーバーからのリクエストを受信する役割を担うマスター プロセスは 1 つだけですが、通常は複数のワーカー プロセスが存在します (特定の数は実際のニーズに応じて構成されます)。各プロセスには PHP インタープリターが組み込まれています。内部は、PHP コードの実際のインタプリタです。

関連するおすすめ:

Apacheとphpの動作原理の分析

以上がphpの仕組みを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPの継続的な使用:その持久力の理由PHPの継続的な使用:その持久力の理由Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

PHPおよびPython:類似点と相違点を調査しますPHPおよびPython:類似点と相違点を調査しますApr 19, 2025 am 12:21 AM

PHPとPythonはどちらも、Web開発、データ処理、自動化タスクで広く使用されている高レベルのプログラミング言語です。 1.PHPは、ダイナミックウェブサイトとコンテンツ管理システムの構築によく使用されますが、PythonはWebフレームワークとデータサイエンスの構築に使用されることがよくあります。 2.PHPはエコーを使用してコンテンツを出力し、Pythonは印刷を使用します。 3.両方ともオブジェクト指向プログラミングをサポートしますが、構文とキーワードは異なります。 4。PHPは弱いタイプの変換をサポートしますが、Pythonはより厳しくなります。 5. PHPパフォーマンスの最適化には、Opcacheおよび非同期プログラミングの使用が含まれますが、PythonはCprofileおよび非同期プログラミングを使用します。

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値を返す可能性のある機能を処理できます。

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

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

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

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

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