私が知っているように、PHP はインタープリター言語ですが、インタープリターですが、プロジェクト全体からコンパイル エラーを検出する方法と、オブジェクト コードを生成せずにコンパイルする場合、コンパイルは何のために必要ですか? 構文のみ?
1 に答える
2
PHPは内部データ構造にコンパイルされ、その内部構造が実行されると思います。ランタイムは、実行時に実際のプログラム ソース コードを 1 行ずつ読み取っていません。したがって、「コンパイル」段階は、ソース コードがこの内部データ構造に変換されていることを意味します。その際、構文も検証され、構文エラーによってページが実行されなくなります。
通常、PHP はすべてのリクエストでこの解析を行う必要があります。これにより、PHP が多少遅くなります。ただし、http://php.net/manual/en/book.apc.php を使用して解析済みコードをキャッシュすることができます。これにより、毎回再解析する必要がなくなり、かなりのスピードアップが得られます。
また、実際に PHP ソースをバイトコードまたはネイティブ コードにコンパイルする PHP のさまざまな実装があります。私が見たパフォーマンス情報によると、コンパイルは速度に大きな影響を与えませんでしたが、(Facebook のコンパイラの場合) RAM の消費を劇的に削減しました。
于 2012-08-29T06:20:35.950 に答える