ホームページ バックエンド開発 PHPの問題 PHP とは - PHP のアーキテクチャと原理の概要

PHP とは - PHP のアーキテクチャと原理の概要

Dec 21, 2019 pm 06:02 PM
php フレーム

PHP とは - PHP のアーキテクチャと原理の概要

私が初めて PHP を学び始めたとき、多くの面接官がよく PHP とは何なのかと尋ねたのを覚えています。当時の標準的な答えは、PHP は弱く型付けされた動的スクリプト プログラミング言語であり、オープンな言語であるというものでした。ソース. 、

free、ハイパーテキスト プリプロセッサの略です。

これは非常に表面的な説明ですが、私にとって PHP はツールであり、両手にハンマーですが、このハンマーは両側に釘抜きが付いているハンマーとよく揶揄されます。

マルチプロセス モデル

PHP はマルチプロセス モデルで設計されており、リクエストが互いに干渉せず、1 つのリクエストが失敗することがないという利点があります。他のプロセスに影響を与えることはありませんが、当初は個人の Web サイトのみに使用されていたツールセットとしてこの設計に問題はありませんが、PHP アプリケーションが大きくなり、アクセス数が増加するにつれて、この方法は、起動のオーバーヘッドを考慮すると明らかに不適切です。大量のリクエストを処理するのはコスト効率が悪いため、現在、PHP は基本的に PHP-FPM の管理下で実行されています。これは PHP プロセス マネージャーです。メモリに常駐し、スタンバイでいくつかの PHP プロセスを開始します。リクエストが受信されると、それを処理するプロセスが割り当てられます。処理後、PHP プロセスはプロセスを破棄せずにリサイクルします。これにより、PHP は高トラフィックのアクセス要求に対処できます。

もちろん、現在では、PHP が WEB リクエストをより効率的に処理できるようにする PHP マルチスレッド ソリューションとコルーチン ベースのソリューションがあります。

弱い型

JAVA や C/C とは異なり、PHP は型付き言語であるため、変数の宣言時に型を決定する必要はありません。 . 、型も実行時に明示的または暗黙的に変更されます。これが、PHP の開発とアプリケーションが高速で便利である理由の 1 つです。

その他

Zend エンジン Ext 拡張モードは内部結合を軽減し、PHP 自体への関数の追加や削除を簡単に行うことができます。

文法がシンプルで必須の仕様が少なく、手続き型でもオブジェクト指向でも開発できるプログラミングスタイルですが、もちろん関数型スタイルも使用できます。

現在の主流バージョンである PHP、PHP7、および PHP5 のアーキテクチャは上図のとおりで、主に 4 つのシステム層で構成されており、下から上に、Zend エンジン、拡張機能、拡張機能、 SAPI インターフェースと上位層アプリケーション。

Zend Engine

Zend エンジンは PHP4 であり、後で PHP に追加されます。元の PHP インタープリターを書き直したもので、完全に C 言語を使用して開発されています。つまり、PHP は C で書かれたプログラミング言語ソフトウェアとして理解できます。エンジンの機能は、PHP コードを、JAVA の ByteCode (バイトコード) に似たオペコードと呼ばれる中間言語に変換することです。

エンジンは、PHP コードに対して 4 つのステップを実行します。

字句解析 スキャン (字句解析)、PHP コードを言語フラグメント (トークン) に変換します。トークンを解析し、単純で意味のある式に変換します。コンパイル コンパイルでは、式をオペコードにコンパイルします。 Executionを実行し、Opcodeを1つずつ順番に実行することで、PHPコードで表現された機能を実現します。

APC、Opchche これらの拡張機能は、オペコードをキャッシュして PHP アプリケーションの実行速度を向上させることができ、これらを使用すると、リクエストが再び来たときに最初の 3 つの手順を省略できます。

このエンジンは、基本的なデータ構造、メモリの割り当てと管理も実装し、外部呼び出しに対応する API メソッドを提供します。

拡張機能 拡張機能

共通の組み込み関数と標準ライブラリは拡張機能を通じて実装されます。これらは PHP のコア拡張機能と呼ばれます。ユーザーは独自の拡張機能に従ってこれらをインストールすることもできます要件。PHP 拡張子。

SAPI

SAPI は Server Application Programming Interface の略語です。中国語はサーバー アプリケーション プログラミング インターフェイスです。これにより、PHP は一連のフックを通じて周辺機器とデータを交換できます。 SAPI は、PHP と外部環境の間のエージェントです。SA​​PI は、外部環境を抽象化し、内部 PHP に固定かつ統一されたインターフェイスを提供します。これにより、PHP 自体の実装は、複雑な外部環境の影響を受けることなく、ある程度の機能を維持できます。独立。

SAPI の分離により、PHP は異なるアプリケーションとの互換性を考慮する必要がなくなり、アプリケーション自体も独自の特性に基づいて異なる処理方法を実装できるようになります。

上位層アプリケーション

Web アプリケーションであっても、Cli モードで実行されるアプリケーションであっても、プログラマによって作成された PHP プログラムは上位層アプリケーションです。 PHP プログラマーはそれを書くことです。

概要

Android 開発を勉強したことがあれば、これらのことは明らかに理解しやすいでしょう。Android のアーキテクチャは PHP のアーキテクチャに非常に似ているからです。これを理解すると、PHP の創始者が「PHP 開発には実際にはフレームワークは必要ない」と言ったのも理解できるでしょう、なぜなら PHP の設計自体がフレームワークに似たものだからです。 Zend はエンジン、Ext はホイール、ハンドル、その他の自動車コンポーネント、SAPI は道路です。

多くの人は自分が単なるドライバーであると偏執的であるため、このコンテンツが少し役に立たないと感じる人もいるかもしれません。なぜドライバーは車がどのように動くかを理解する必要があるのでしょうか? 車の作り方を理解することの方が重要です。軽蔑的だ。私も Laravel ドキュメントを翻訳していたときまではそう思っていました。Laravel の作者が私にインスピレーションを与えてくれたので、この記事を読んでいるあなたにも次の言葉を送ります。

「現実世界」でツールを使用する場合、そのツールがどのように機能するかを理解していれば、より快適にツールを使用できるようになります。アプリケーション開発も同様です。開発ツールがどのように機能するかを理解すると、より快適に使用できるようになります。

このドキュメントの目的は、Laravel フレームワークの仕組みとその仕組みをより深く理解していただくことです。フレームワークを包括的に理解すると、すべてが「魔法」ではなくなり、より自信を持ってアプリケーションを構築できるようになります。

以上がPHP とは - 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 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

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 は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

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

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

See all articles