PHP の OpCode 原理の詳細な説明
この記事は主にPHPのOpCode原理を紹介し、関連するコンパイルメカニズムとPHPプログラムの動作原理をより詳細に分析します。必要な友人はそれを参照してください
OpCodeはJava ByteCodeと同じように、PHPスクリプトによってコンパイルされる中間言語です。 、または .NET の MSL。 この記事は主に「OPcode の理解」とインターネットに基づいて個人的な理解と修正に基づいて記録されています:
PHP コード:
PHP はこのコードを実行するために次の 4 つの手順を実行します。 1. スキャン (レクシング)、PHP コードを言語フラグメント (トークン) に変換します2. 解析、トークンを単純で意味のある式に変換します
3. コンパイル、式を Opocdes にコンパイルします 4. オペコードを 1 つずつ実行します。 PHP スクリプトの機能を実装するための時間。
注: APC などの一部の現在のキャッシュでは、PHP がオペコードをキャッシュできるため、リクエストが届くたびに最初の 3 つの手順を繰り返す必要がなく、PHP の実行速度が大幅に向上します。
<?php echo "Hello World"; $a = 1 + 1; echo $a; ?>
4. 変数をエコーします
次に、トークンを 1 つずつ op_array にコンパイルします:
1.オペコード番号の識別は、add、echo
2 などの各 op_array の操作タイプを示します。結果には、Opcode の結果
3 が格納されます。Operand 2 のオペランド
Array ( [0] => Array ( [0] => 367 [1] => <?php [2] => 1 ) [1] => Array ( [0] => 370 [1] => [2] => 2 ) [2] => Array ( [0] => 316 [1] => echo [2] => 2 ) [3] => Array ( [0] => 370 [1] => [2] => 2 ) [4] => Array ( [0] => 315 [1] => "Hello World" [2] => 2 ) [5] => ; [6] => Array ( [0] => 370 [1] => [2] => 2 ) [7] => Array ( [0] => 309 [1] => $a [2] => 3 ) [8] => Array ( [0] => 370 [1] => [2] => 3 ) [9] => = [10] => Array ( [0] => 370 [1] => [2] => 3 ) [11] => Array ( [0] => 305 [1] => 1 [2] => 3 ) [12] => Array ( [0] => 370 [1] => [2] => 3 ) [13] => + [14] => Array ( [0] => 370 [1] => [2] => 3 ) [15] => Array ( [0] => 305 [1] => 1 [2] => 3 ) [16] => ; [17] => Array ( [0] => 370 [1] => [2] => 3 ) [18] => Array ( [0] => 316 [1] => echo [2] => 4 ) [19] => Array ( [0] => 370 [1] => [2] => 4 ) [20] => Array ( [0] => 309 [1] => $a [2] => 4 ) [21] => ; [22] => Array ( [0] => 370 [1] => [2] => 4 ) [23] => Array ( [0] => 369 [1] => ?> [2] => 5 ) )
各オペランドは次の 2 つの部分で構成されます: a) op_type: IS_CONST、IS_TMP_VAR、IS_VAR、IS_UNUSED、またはIS_CVb) u、共用体は、op_type に応じて、オペランドの値 (const) または左辺値 (var) を異なる型で格納します。var の場合、各 var は異なります。 IS_TMP_VAR は、名前が示すように、次の op_array で使用するために op_array の結果を保存する一時変数です。このタイプのオペランドの u は、通常、変数テーブルを指すハンドル (整数) を格納します。 used ~ ~0 などの先頭は、変数テーブルの番号 0 にある不明な一時変数 IS_VAR を表します。これは、ZE2.1/ 以降のコンパイラで使用される型を表す IS_CV を表す $ で始まります。 PHP5.1 のキャッシュ メカニズムでは、この変数は、変数が初めて参照されるとき、その変数のアドレスを格納します。この変数へのその後の参照では、アクティブなシンボル テーブルを再度検索する必要はありません。 . CV 変数は ! で始まることで表されます。 $a 変数は !0 に最適化されます。 要約: 上記がこの記事の全内容です。皆様の学習に役立つことを願っています。 関連する推奨事項:
同時実行下でコード取得機能を実装するためにロックを使用する PHP に基づく方法
PHP 自動ローディングの簡単な実装方法 実装された 4 つの基本的な並べ替えアルゴリズムの実行時間の比較PHP で (必読)
以上がPHP の OpCode 原理の詳細な説明の詳細内容です。詳細については、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)

ホットトピック









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

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

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

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

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

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