この記事では、PHP でのオペコード キャッシュの簡単な使用法を主に紹介し、サンプルの形でオペコードの概念、原理、簡単な開き方と使用法を分析します。それが皆さんの参考になれば幸いです。
この記事の例では、PHP でのオペコード キャッシュの簡単な使用法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
1. opcode とは
インタープリターはコードを分析した後、opcode、opcode と呼ばれる直接実行できる中間コードを生成します
2 . インタプリタとコンパイラ 違い
は、インタプリタは中間コードを生成した後にそれを直接実行し、ランタイムの制御は依然としてインタプリタの手にあることです。
コンパイラは中間コードを生成し、そのコードをさらに最適化して直接実行できるターゲット プログラムを生成しますが、その制御はターゲット プログラム内にあり、何も実行しません。コンパイラと関係があります。
3.php はインタープリタ型言語であり、その原理は字句解析、構文解析、意味解析などを含むコンパイルに似ています。php インタープリタのコア エンジンは zend エンジンです
4 はどうでしょうか。 php コードのオペコードを確認します
php の parsekit 拡張機能をインストールすると、parsekit_compile_string()
php -r "var_dump(parsekit_compile_string('print 1+1;'));"
5 などの拡張 API を通じて php のオペコードを確認できます
5。最初に字句解析が行われ、スクリプト コードは一連の単語の組み合わせであることがわかります。たとえば、print の場合、php ソース コードの
zend/zend_ language_scanner.l を確認します。このファイルには、 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
を設定します。
<?php print_r(apc_cache_info());?>
、
apc.stat=off
を設定することもできます。
xdebug.profiler_output_dir = /tmp/xdebug xdebug.profiler_output_name = cachegrind.out.%p
xdebug 関数の追跡:
xdebug.trace_output_dir = /tmp/xdebug xdebug.trace_output_name = trace.%c
wincachegrind を使用して、ウィンドウの下に xdebug レポート ファイルを表示できます。
PHPのオペコード最適化を深く理解する(画像とテキスト)
PHP原則のオペコード(オペレーションコード)を理解する_PHPチュートリアル
以上がPHP でのオペコード キャッシュの使用法についての概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。