PHPのお勉強!

PHP TOP

実行時設定

php.ini の設定により動作が変化します。

OPcache 設定オプション
名前 デフォルト 変更可能 変更履歴
opcache.enable 1 INI_ALL  
opcache.enable_cli 0 INI_SYSTEM PHP 7.1.2 と 7.1.6 の間では、デフォルトは 1 でした
opcache.memory_consumption 128 INI_SYSTEM  
opcache.interned_strings_buffer 8 INI_SYSTEM  
opcache.max_accelerated_files 10000 INI_SYSTEM  
opcache.max_wasted_percentage 5 INI_SYSTEM  
opcache.use_cwd 1 INI_SYSTEM  
opcache.validate_timestamps 1 INI_ALL  
opcache.revalidate_freq 2 INI_ALL  
opcache.revalidate_path 0 INI_ALL  
opcache.save_comments 1 INI_SYSTEM  
opcache.fast_shutdown 0 INI_SYSTEM PHP 7.2.0 で削除されました
opcache.enable_file_override 0 INI_SYSTEM  
opcache.optimization_level 0x7FFEBFFF INI_SYSTEM PHP 7.3.0 で 0x7FFFBFFF から変更されました。
opcache.inherited_hack 1 INI_SYSTEM PHP 7.3.0 で削除されました
opcache.dups_fix 0 INI_ALL  
opcache.blacklist_filename "" INI_SYSTEM  
opcache.max_file_size 0 INI_SYSTEM  
opcache.consistency_checks 0 INI_ALL PHP 8.1.18 と PHP 8.2.5 で無効。PHP 8.3.0 で削除。
opcache.force_restart_timeout 180 INI_SYSTEM  
opcache.error_log "" INI_SYSTEM  
opcache.log_verbosity_level 1 INI_SYSTEM  
opcache.record_warnings 0 INI_SYSTEM PHP 8.0.0 以降で利用可能
opcache.preferred_memory_model "" INI_SYSTEM  
opcache.protect_memory 0 INI_SYSTEM  
opcache.mmap_base null INI_SYSTEM Windows のみ
opcache.restrict_api "" INI_SYSTEM  
opcache.file_update_protection 2 INI_ALL  
opcache.huge_code_pages 0 INI_SYSTEM  
opcache.lockfile_path "/tmp" INI_SYSTEM  
opcache.opt_debug_level 0 INI_SYSTEM PHP 7.1.0 以降で利用可能
opcache.file_cache null INI_SYSTEM  
opcache.file_cache_only 0 INI_SYSTEM  
opcache.file_cache_consistency_checks 1 INI_SYSTEM  
opcache.file_cache_fallback 1 INI_SYSTEM Windows のみ
opcache.validate_permission 0 INI_SYSTEM PHP 7.0.14 以降で利用可能
opcache.validate_root 0 INI_SYSTEM PHP 7.0.14 以降で利用可能
opcache.preload "" INI_SYSTEM PHP 7.4.0 以降で利用可能
opcache.preload_user "" INI_SYSTEM PHP 7.4.0 以降で利用可能
opcache.cache_id "" INI_SYSTEM Windows のみ。PHP 7.4.0 以降で利用可能
opcache.jit "tracing" INI_ALL PHP 8.0.0 以降で利用可能
opcache.jit_buffer_size 0 INI_SYSTEM PHP 8.0.0 以降で利用可能
opcache.jit_debug 0 INI_ALL PHP 8.0.0 以降で利用可能
opcache.jit_bisect_limit 0 INI_ALL PHP 8.0.0 以降で利用可能
opcache.jit_prof_threshold 0.005 INI_ALL PHP 8.0.0 以降で利用可能
opcache.jit_max_root_traces 1024 INI_SYSTEM PHP 8.0.0 以降で利用可能
opcache.jit_max_side_traces 128 INI_SYSTEM PHP 8.0.0 以降で利用可能
opcache.jit_max_exit_counters 8192 INI_SYSTEM PHP 8.0.0 以降で利用可能
opcache.jit_hot_loop 64 INI_SYSTEM PHP 8.0.0 以降で利用可能
opcache.jit_hot_func 127 INI_SYSTEM PHP 8.0.0 以降で利用可能
opcache.jit_hot_return 8 INI_SYSTEM PHP 8.0.0 以降で利用可能
opcache.jit_hot_side_exit 8 INI_SYSTEM PHP 8.0.0 以降で利用可能
opcache.jit_blacklist_root_trace 16 INI_ALL PHP 8.0.0 以降で利用可能
opcache.jit_blacklist_side_trace 8 INI_ALL PHP 8.0.0 以降で利用可能
opcache.jit_max_loop_unrolls 8 INI_ALL PHP 8.0.0 以降で利用可能
opcache.jit_max_recursive_calls 2 INI_ALL PHP 8.0.0 以降で利用可能
opcache.jit_max_recursive_returns 2 INI_ALL PHP 8.0.0 以降で利用可能
opcache.jit_max_polymorphic_calls 2 INI_ALL PHP 8.0.0 以降で利用可能
INI_* モードの詳細および定義については どこで設定を行うのか を参照してください。

以下に設定ディレクティブに関する 簡単な説明を示します。

opcache.enable bool

オペコード・キャッシュを有効にします。 無効にした場合、コードは最適化もキャッシュもされません。 opcache.enable の設定を、実行時に ini_set() で有効化することはできません。 実行時にできるのは、無効化だけです。スクリプト内で有効化しようとすると、警告が発生します。

opcache.enable_cli bool

PHP の CLI 版に対してオペコード・キャッシュを有効にします。

opcache.memory_consumption int

OPcache によって使用される共有メモリ・ストレージのサイズ。( MB 単位) 設定できる最小値は "8" です。これより小さい値を設定しても、最小値が強制されます。

opcache.interned_strings_buffer int

インターン化 (intern) された文字列を格納するために使用されるメモリ量。( MB 単位)

opcache.max_accelerated_files int

OPcache ハッシュテーブルのキー(すなわちスクリプト)の最大数。 使用される現時点の値は、 素数の集合 { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987, 262237, 524521, 1048793 } のうち、 設定値以上の最初の数値です。 最小値は 200 です。最大値は 1000000 です。 これらの範囲外の値が設定されても、範囲内の値に設定し直されます。

opcache.max_wasted_percentage int

メモリが不十分な場合に、再起動がスケジュールされるまでに許される、無駄なメモリの最大の割合。 最大値は "50" です。これ以上の値が設定されても、最大値が強制されます。

opcache.use_cwd bool

有効にすると、OPcache は現行の作業ディレクトリをスクリプト・キーに追加します。 その方法によって、同じ基底名を持つファイル同士で起こりうる衝突を回避します。 このディレクティブを無効にするとパフォーマンスが向上しますが、既存のアプリケーションを破壊するかもしれません。

opcache.validate_timestamps bool

有効にすると、OPcache は、スクリプトが更新されたかを opcache.revalidate_freq 秒ごとにチェックします。 このディレクティブが無効な場合、ファイルシステムへの変更を反映するには、 opcache_reset() または opcache_invalidate() 関数を介して、 または Web サーバーを再起動して手動で OPcache をリセットしなければいけません。

注意: opcache.file_update_protectionopcache.max_file_size の値に0でない値が設定されている場合、OPcache はファイルのタイムスタンプをまだコンパイル時にチェックする可能性があります。

opcache.revalidate_freq int

更新のためにスクリプトのタイムスタンプをチェックする頻度。(秒単位) 0 にすると、OPcache は、リクエストごとに更新をチェックします。

この設定ディレクティブは、 opcache.validate_timestamps が無効の場合、 無視されます。

opcache.revalidate_path bool

無効にすると、 同一の include_path を使用する、 キャッシュされた既存のファイルが再利用されます。 したがって、同じ名前を持つファイルが include_path の他の部分にあると、それは見つかりません。

opcache.save_comments bool

無効にすると、最適化したコードのサイズを減らすために OPcode キャッシュからすべてのドキュメンテーション・コメントが廃棄されます。 この設定ディレクティブを無効にすると、注釈のためにコメント・パースに依存するアプリケーションおよびフレームワークを破壊するかもしれません。 それには、Doctrine、Zend Framework 2 および PHPUnit が含まれます。

opcache.fast_shutdown bool

有効にすると、それぞれに割り当てられたブロックを解放しない、高速シャットダウン・シーケンスが使用されます。 しかし、リクエスト変数のすべてのセットをひとまとめに割当てを解除することは、Zend Engine のメモリ・マネージャに依存します。

このディレクティブは、PHP 7.2.0 で削除されました。 高速なシャットダウンシーケンスの類の設定は、PHP本体に統合され、可能であれば自動的に使用されます。

opcache.enable_file_override bool

有効にすると、file_exists()is_file() および is_readable() が呼ばれた際に、 ファイルが既にキャッシュ済みかどうかをオペコード・キャッシュからチェックします。 これは、PHP スクリプトの存在および読み込み可能かをチェックするアプリケーションのパフォーマンスを改善させるかもしれません。 しかし、opcache.validate_timestamps が無効な場合に、 陳腐化した結果を返す危険があります。

opcache.optimization_level int

どの最適化パスが実行されるかコントロールするビットマスク。 デフォルトでは、すべての安全な最適化を適用します。 デフォルト値の変更が役に立つのは、