ホームページ >バックエンド開発 >PHPチュートリアル >PHP でのオペコード キャッシュの使用方法の詳細な説明

PHP でのオペコード キャッシュの使用方法の詳細な説明

php中世界最好的语言
php中世界最好的语言オリジナル
2018-05-17 14:19:311611ブラウズ

今回は、PHP でのオペコード キャッシュの使用について詳しく説明します。PHP でオペコード キャッシュを使用する際の 注意事項 について、実際のケースを見てみましょう。

1. オペコードとは

インタープリターはコードを分析した後、オペコードと呼ばれる中間コードを生成します

2. インタープリターとコンパイラーの違い

その後、インタープリターは中間コードを生成します。中間コードは直接実行され、ランタイムの制御は依然としてインタプリタの手に渡ります。

コンパイラは中間コードを生成し、そのコードをさらに最適化して直接実行できるターゲット プログラムを生成しますが、その制御はターゲット プログラム内にあり、何も実行しません。コンパイラと関係があります。

3.php はインタープリタ型言語であり、その原理は字句解析、構文解析、意味解析などを含むコンパイルに似ています。php インタープリタのコア エンジンは

zend エンジンです

4 はどうでしょうか。 php コードの一部のオペコードを表示します

php の parsekit 拡張機能をインストールすると、parsekit_compile_<a href="http://www.%20php.cn/wiki/57.html" target="_blank">string</a>()parsekit_compile_<a href="http://www.php.cn/wiki/57.html" target="_blank">string</a>()

php -r "var_dump(parsekit_compile_string(&#39;print 1+1;&#39;));"

5.opcodeが生成されます

まず、字句解析を行う必要があります。スクリプトコードは、一連の単語の組み合わせとして、インタプリタはこれらの単語を分類してマークする必要があります

たとえば、このファイルでは、php ソース コード パッケージ内の

zend/zend_lang_scanner.l を調べます。印刷に対応するマークを見つけることができます。 T_PRINT

マークを見つけたら、次のステップは構文分析です。

zend/zend_langage_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を通じてキャッシュのステータスを確認できます。オペコードキャッシュの有効期限が切れます

オペコードキャッシュは期限切れになります。有効期限が切れた場合は、再度生成する必要がありますもちろん、有効期限チェックメカニズムをスキップして、サーバーを再起動することでプログラムコードの変更が有効になるように php.ini で

apc.stat=off

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

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

<p style="margin-bottom: 7px; margin-top: 14px;">xdebug.profiler_output_dir = /tmp/xdebug<br/>xdebug.profiler_output_name = cachegrind.out.%p</p>

xdebug 関数の追跡:

xdebug.trace_output_dir = /tmp/xdebug
xdebug.trace_output_name = trace.%c

wincachegrind を使用して、ウィンドウの下に xdebug レポート ファイルを表示できます。

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨書籍:

PHP での奇数と偶数および変数の使用の詳細な説明

Laravel ORM Model::find キャッシュ メソッドの詳細な説明

以上がPHP でのオペコード キャッシュの使用方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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