PHP はインタープリタ型言語です。コンパイル済み言語とは異なり、コンパイル結果は現在の CPU システムの命令です。PHP ソース コードは、オペコードにコンパイルされる場合にのみ、zend 仮想マシンによって直接実行できます。
以下は、PHP7 言語の実行原理の簡単な説明です:
1. ソース コードは、まず Re2c によって実装された字句解析を使用して字句解析を行い、次の部分をカットします。ソースコードを複数の String 単位に分割し、分割された文字列を Token と呼びます;
2. Bison をベースに実装された構文アナライザは、Token と BNF 文法規則に準拠したコードから抽象構文ツリーを生成します;
3. 抽象構文ツリー (AST) は、オペコードを生成するためにコンパイルされます; プロセス。
それだけでなく、メモリ上に常駐する Java やその他の言語とは異なり、メモリは PHP コードの実行直後に解放され、基本的にこの時点ですべてのデータが破棄されます (ごく一部の言語のみ)。少量のデータがキャッシュされます)。
この実行メカニズムの利点は、メモリ リークを効果的に回避し、メモリ リサイクル メカニズムがよりシンプルであることですが、欠点は、各 PHP リクエストでリクエスト、変換、実行のプロセスを繰り返す必要があることです。 注: メモリ リークとは、プログラム内で動的に割り当てられたヒープ メモリが解放されないか、何らかの理由で解放できないことを意味します。その結果、システム メモリが無駄に消費され、プログラムの速度が低下したり、場合によってはシステムがクラッシュしたりすることがあります。重大な結果が起こるのを待ちます。 メモリに常駐しないという欠点を補うために、オペコード キャッシュが導入され、zend 仮想マシンは最初の実行時の PHP コードのコンパイル結果をメモリまたはハードディスクにキャッシュし、直接キャッシュします。次回コードのこの部分が実行されるときにキャッシュを読み取ります。これにより、PHP の実行速度がある程度向上します。参考資料
1. Chen Lei、PHP7 の基礎となる設計とソース コードの実装
2. Lie Xusong、Chen Wen、PHP のコア テクノロジとベスト プラクティス
以上がPHP7 01 の基礎となる設計の簡単な紹介 - PHP7 言語の実行原理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。