最近サーバーを構築したのですが、ランプがどのように機能するのか、それともどのように接続されているのかを突然感じました。私は普段プログラムを書くだけで、その動作原理について考えたことはありませんでした:
PHP の基本的な動作原理
図 1 からわかるように、PHP は下から上への4層システム
①ZendエンジンZendは完全に純粋なCで実装されており、PHPのコア部分であり、PHPコード(字句解析、構文解析、および一連のコンパイルプロセス)を実行可能ファイルに変換します。オペコードの処理と対応する処理メソッドは、基本的なデータ構造 (ハッシュテーブル、OO など)、メモリの割り当てと管理を実装し、外部呼び出しに対応する API メソッドを提供します。これはすべての周辺機能が zend を中心に実装されます。
②拡張機能拡張機能は、zend エンジンを中心として、コンポーネントベースでさまざまな基本サービスを提供します。一般的なさまざまな組み込み関数 (配列シリーズなど)、標準ライブラリなどはすべて拡張機能を通じて実装されます。ユーザーは、機能拡張やパフォーマンスの最適化などの目的を達成するために、必要に応じて独自の拡張機能を実装することもできます (たとえば、現在 Tieba で使用されている PHP 中間層やリッチ テキスト解析は、拡張機能の典型的なアプリケーションです)。
③SapiSapi の正式名は、サーバー アプリケーション プログラミング インターフェイスです。これは、PHP が一連のフック関数を通じて周辺データと対話できるようにする、非常にエレガントで成功した設計です。 PHP は、SAPI により、PHP 自体を上位層のアプリケーションから切り離し、分離することに成功しました。PHP は、異なるアプリケーションとの互換性を考慮する必要がなくなり、アプリケーション自体も独自の特性に応じて異なる処理方法を実装できます。これは、後ほど sapi の章で紹介します
④ 上位層アプリケーションこれは、私たちが通常作成する PHP プログラムです。Web サーバーを介して Web アプリケーションを実装したり、Web アプリケーションを使用したりするなど、さまざまな Sapi メソッドを通じてさまざまなアプリケーション モードを取得できます。コマンドライン スクリプトとして実行など。
アーキテクチャのアイデア:エンジン (Zend) + コンポーネント (ext) モデルにより内部結合が削減されます
中間層 (sapi) が Web サーバーと php を分離します
*********** ** *********************************************** *** ***********
phpが車なら
車の骨格はphpそのもの
Zendは車のエンジン(エンジン)です
Ext 色々以下のコンポーネントは車の車輪です
Sapi は道路とみなすことができ、車はさまざまな種類の道路を走ることができます
そして、php プログラムの実行は、車が道路を走ることを意味します。
したがって、必要なものは次のとおりです: 優れたパフォーマンスのエンジン + 適切なホイール + 正しい滑走路
Apache と php の関係
Apache による php の解析は、多くのモジュールの中の php モジュールを通じて完了します。
498)this.width=498;' onmousewheel = 'javascript:return big(this)' alt="wps_clip_image-31721" src="http://www.bkjia.com/uploadfile/2013/0904 /20130904095355122.png" width="378" height="299" />