ホームページ >バックエンド開発 >PHPチュートリアル >PHP でのオペコード キャッシュの使用法についての概要

PHP でのオペコード キャッシュの使用法についての概要

小云云
小云云オリジナル
2018-03-28 10:19:381372ブラウズ

この記事では、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());?>


7.opcode キャッシュの有効期限

を介してキャッシュのステータスを確認できます。もちろん、有効期限チェックメカニズムをスキップして、サーバーを再起動することでプログラムコードの変更が有効になるように php.ini に

apc.stat=off

を設定することもできます。

8. スクリプトの追跡と分析には、xdebug を使用してパフォーマンス トラッカーを実装し、プログラムの実行ボトルネックを見つけてプログラムを最適化できます。

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 でのオペコード キャッシュの使用法についての概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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