ホームページ >バックエンド開発 >PHP7 >PHP7 01 の基礎となる設計の簡単な紹介 - PHP7 言語の実行原理

PHP7 01 の基礎となる設計の簡単な紹介 - PHP7 言語の実行原理

小马驹会飞
小马驹会飞オリジナル
2020-04-28 17:06:272379ブラウズ

PHP はインタープリタ型言語です。コンパイル済み言語とは異なり、コンパイル結果は現在の CPU システムの命令です。PHP ソース コードは、オペコードにコンパイルされる場合にのみ、zend 仮想マシンによって直接実行できます。

以下は、PHP7 言語の実行原理の簡単な説明です:

1. ソース コードは、まず Re2c によって実装された字句解析を使用して字句解析を行い、次の部分をカットします。ソースコードを複数の String 単位に分割し、分割された文字列を Token と呼びます;

2. Bison をベースに実装された構文アナライザは、Token と BNF 文法規則に準拠したコードから抽象構文ツリーを生成します;

3. 抽象構文ツリー (AST) は、オペコードを生成するためにコンパイルされます; プロセス。

それだけでなく、メモリ上に常駐する Java やその他の言語とは異なり、メモリは PHP コードの実行直後に解放され、基本的にこの時点ですべてのデータが破棄されます (ごく一部の言語のみ)。少量のデータがキャッシュされます)。 PHP7 01 の基礎となる設計の簡単な紹介 - PHP7 言語の実行原理

この実行メカニズムの利点は、メモリ リークを効果的に回避し、メモリ リサイクル メカニズムがよりシンプルであることですが、欠点は、各 PHP リクエストでリクエスト、変換、実行のプロセスを繰り返す必要があることです。

注: メモリ リークとは、プログラム内で動的に割り当てられたヒープ メモリが解放されないか、何らかの理由で解放できないことを意味します。その結果、システム メモリが無駄に消費され、プログラムの速度が低下したり、場合によってはシステムがクラッシュしたりすることがあります。重大な結果が起こるのを待ちます。

メモリに常駐しないという欠点を補うために、オペコード キャッシュが導入され、zend 仮想マシンは最初の実行時の PHP コードのコンパイル結果をメモリまたはハードディスクにキャッシュし、直接キャッシュします。次回コードのこの部分が実行されるときにキャッシュを読み取ります。これにより、PHP の実行速度がある程度向上します。

参考資料

1. Chen Lei、PHP7 の基礎となる設計とソース コードの実装

2. Lie Xusong、Chen Wen、PHP のコア テクノロジとベスト プラクティス

以上がPHP7 01 の基礎となる設計の簡単な紹介 - PHP7 言語の実行原理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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