web-dev-qa-db-ja.com

PHPスクリプトはどの程度正確に実行されますか?

「PHPスクリプトはどのように実行されるのか」ということを考えていたところ、最初に構文エラーなどを解析してから、解釈して実行すると思いました。

しかし、わかりませんなぜそれは正しいと思います。私はおそらく間違っています。

つまり、PHPファイルはどのように解釈および実行されますか?これにはどの段階が含まれますか?インクルードファイルはスクリプトの解析にどのように適合しますか?

これは私が頭を抱えるのを助けるためです。私は興味があり、Googleで良い答えを見つけることができません。

35
alex

PHPはPHP 4.0以降、コンパイルされた言語です。

コンパイラとは何かという考えは、大きな混乱を招く主題のようです。一部の人々は、コンパイラが1つの言語のソースコードを実行可能プログラムに変換するプログラムであると想定しています。コンパイラとは何かの定義は実際にはそれよりも広いです。

コンパイラは、ソースコードをコードの別の表現に変換するプログラムです。多くの場合、ターゲット表現はマシンコードですが、別の言語または同じ言語のソースコードの場合もあります。

PHPは、2000年にPHP 4が初めてリリースされたときにコンパイルされた言語になりました。バージョン3までは、PHPソースコードが正しく解析および実行されましたPHPインタプリタ。

PHP 4はZendエンジンを導入しました。このエンジンはPHPコードの処理をいくつかのフェーズに分割します。最初のフェーズはPHPソースコードを解析し、PHPコードはZendオペコードと呼ばれます。オペコードはJavaバイトコードに類似した命令セットです。これらのオペコードはメモリに保存されます。Zendエンジン処理の第2フェーズは、生成されたオペコードの実行です。

詳細情報のフォームは http://www.phpclasses.org/blog/post/117-PHP-compiler-performance.html に移動します

18
Vishnu Saini

基本的に、PHPスクリプトがロードされるたびに、2つのステップで実行されます。

  • PHPソースコードが解析され、いわゆるopcodesに変換されます。
    • Javaのバイトコードに相当するもの
    • それらがどのように見えるかを確認したい場合は、 VLD拡張 を使用できます。
  • 次に、それらのオペコードが実行されます

スライドシェアでのセバスチャンバーグマンのこれらのスライドは、そのプロセスを少しよく理解するのに役立つかもしれません: PHPコンパイラ内部

16
Pascal MARTIN

すべての parser tokens のリストもここにあります。

1
alex