PHP でのオペコード キャッシュの簡単な使用法

不言
リリース: 2023-03-22 17:10:01
オリジナル
1212 人が閲覧しました

この記事では、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


を設定し、


7 を通じてキャッシュのステータスを確認します。オペコード キャッシュの有効期限が切れます

オペコード キャッシュの有効期限が切れた場合は、有効期限チェック メカニズムをスキップして

apc.stat=off

を php.ini に設定することもできます。このように、プログラム コードへの変更はサーバーを再起動することによって有効になる必要があります。


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

xdebug.profiler_output_dir = /tmp/xdebug

xdebug.profiler_output_name =cachegrind.out.%p

xdebug の関数トレース:

xdebug.trace_output_dir = /tmp/xdebug

xdebug.trace_out put_name = トレース.%c

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

関連する推奨事項:

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

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート