この記事では、PHP でのオペコード キャッシュの簡単な使用法を紹介し、参考として共有します
1. オペコードとは
インタープリターはコードを分析した後、直接実行できる中間コードを生成します。 2. インタプリタとコンパイラの違い
インタプリタは中間コードを生成し、中間コードを直接実行します。ランタイムの制御は依然としてインタプリタの手にあります。
コンパイラは中間コードを生成し、そのコードをさらに最適化して直接実行できるターゲット プログラムを生成しますが、その制御はターゲット プログラム内にあり、何も実行しません。コンパイラと関係があります。
3.php はインタープリタ型言語であり、その原理は字句解析、構文解析、意味解析などを含むコンパイルに似ています。php インタープリタのコアエンジンは zend エンジンです
4.php の表示方法段落 コードのオペコード
php の parsekit 拡張機能をインストールすると、parsekit_compile_string() などの拡張 API を通じて php のオペコードを表示できます
php -r "var_dump(parsekit_compile_string('print 1+1; '));"
5. オペコードが生成されます
最初に字句解析を受ける必要があります。スクリプト コードは一連の単語の組み合わせとみなすことができます。インタプリタはこれらの単語を分類し、マークする必要があります
たとえば、 print php ソース コード パッケージ zend_ language_scanner.l の zend/ を調べます。このファイルでは、print に対応するマークを見つけることができます。 T_PRINT
マークを見つけたら、次のステップは構文解析です。zend/zend_ language_parser.y で、T_PRINT
に対応する関数を見つけます。次に、zend/zend_compile.c で関数実装コードを見つけます。 。すべてのオペコードはユーザーの整数で表されます。
6. オペコード キャッシュをオンにする
オペコードの生成にはシステム オーバーヘッドが必要です。このオーバーヘッドはかなり大きいため、コンパイルの繰り返しを避けるために、PHP の最適化ではオペコード キャッシュをオンにする必要があります。
PHP のオペコード キャッシュには、APC、eAccelerator、XCache が含まれており、これらはすべてオペコードを共有メモリに配置します。
APC を例に挙げます: php.ini で
apc.cache_by_default = on
を設定し、
8. スクリプトの追跡と分析には、xdebug を使用してパフォーマンス トラッカーを実装し、プログラムの実行ボトルネックを見つけてプログラムを最適化できます。
xdebug.profiler_output_dir = /tmp/xdebug
xdebug.profiler_output_name =cachegrind.out.%pxdebug の関数トレース:
xdebug.trace_output_dir = /tmp/xdebug
wincachegrind を使用すると、ウィンドウの下に xdebug レポート ファイルを表示できます。
関連する推奨事項:
以上がPHP でのオペコード キャッシュの簡単な使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。