php.ini の設定により動作が変化します。
どこで設定を行うのか を参照してください。
以下に設定ディレクティブに関する 簡単な説明を示します。
opcache.enable
boolean
オペコード・キャッシュを有効にします。 無効にした場合、コードは最適化もキャッシュもされません。 opcache.enable の設定を、実行時に ini_set() で有効化することはできません。 実行時にできるのは、無効化だけです。スクリプト内で有効化しようとすると、警告が発生します。
opcache.enable_cli
boolean
PHP の CLI 版に対してオペコード・キャッシュを有効にします。 主にテストとデバッギングに役立ちます。
opcache.memory_consumption
integer
OPcache によって使用される共有メモリ・ストレージのサイズ。( MB 単位)
opcache.interned_strings_buffer
integer
インターン (intern) された文字列を格納するために使用されるメモリ量。( MB 単位) この設定ディレクティブの値は、PHP 5.3.0 未満では無視されます。
opcache.max_accelerated_files
integer
OPcache ハッシュテーブルのキー(すなわちスクリプト)の最大数。 使用される現時点の値は、 設定値より大きい素数の集合 { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 } のうち、 最初の数値です。 200 から 100000 までの間の数値のみが許されています。
opcache.max_wasted_percentage
integer
再起動がスケジュールされるまでに許される、無駄なメモリの最大の割合。
opcache.use_cwd
boolean
有効にすると、OPcache は現行の作業ディレクトリをスクリプト・キーに追加します。 その方法によって、同じ基底名を持つファイル同士で起こりうる衝突を回避します。 このディレクティブを無効にするとパフォーマンスが向上しますが、既存のアプリケーションを破壊するかもしれません。
opcache.validate_timestamps
boolean
有効にすると、OPcache は、スクリプトが更新されたか opcache.revalidate_freq 秒ごとにチェックします。 このディレクティブが無効な場合、ファイルシステムへの変更を反映するには、 opcache_reset() または opcache_invalidate() 関数を介して、 または Web サーバを再起動して手動で OPcache をリセットしなければいけません。
opcache.revalidate_freq
integer
更新のためにスクリプトのタイムスタンプをチェックする頻度。(秒単位) 0 にすると、OPcache は、リクエストごとに更新をチェックします。
この設定ディレクティブは、 opcache.validate_timestamps が無効の場合、 無視されます。
opcache.revalidate_path
boolean
無効にすると、 同一の include_path を使用する、 キャッシュされた既存のファイルが再利用されます。 したがって、同じ名前を持つファイルが include_path の他の部分にあると、それは見つかりません。
opcache.save_comments
boolean
無効にすると、最適化したコードのサイズを減らすために OPcode キャッシュからすべてのドキュメンテーション・コメントが廃棄されます。 この設定ディレクティブを無効にすると、注釈のためにコメント・パースに依存するアプリケーションおよびフレームワークを破壊するかもしれません。 それには、Doctrine、Zend Framework 2 および PHPUnit が含まれます。
opcache.load_comments
boolean
無効にすると、たとえ存在していても、ドキュメンテーション・コメントはオペコード・キャッシュから読み込まれません。 これは、それらを必要とするアプリケーションでコメントを読み込むためだけに opcache.save_comments と一緒に使用できます。
opcache.fast_shutdown
boolean
有効にすると、それぞれに割り当てられたブロックを解放しない、高速シャットダウン・シーケンスが使用されます。 しかし、リクエスト変数のすべてのセットをひとまとめに割当てを解除することは、Zend Engine のメモリ・マネージャに依存します。
opcache.enable_file_override
boolean
有効にすると、オペコード・キャッシュは file_exists()、 is_file() および is_readable() が呼ばれた際に、 ファイルが既にキャッシュ済みかどうかチェックします。 これは、PHP スクリプトの存在と読みやすさをチェックするアプリケーションでパフォーマンスを増大するかもしれません。 しかし、opcache.validate_timestamps を無効にすると、 陳腐化したデータを返す危険があります。
opcache.optimization_level
integer
どの最適化パスが実行されるかコントロールするビットマスク。
opcache.inherited_hack
boolean
PHP 5.3 未満では、OPcache は DECLARE_CLASS オペコードが継承を使用した場所を保存します。 ファイルが読み込まれる際に、OPcache は現行の環境を使用して継承クラスをバインドしようとします。 DECLARE_CLASS オペコードが現行のスクリプトで不要かもしれない時に問題です。 オペコードが定義されていることをスクリプトが必要とする場合、それは実行できないかもしれません。
この設定ディレクティブの値は、PHP 5.3 以降では無視されます。
opcache.dups_fix
boolean
"Cannot redeclare class" (クラスを再宣言できません)というエラーを回避する目的でのみ、このハックを有効にするべきです。
opcache.blacklist_filename
string
OPcache ブラックリスト・ファイルの場所。 ブラックリスト・ファイルは、高速化すべきではないファイルの名前を 1 行につき 1 つ含むテキストファイルです。 ワイルドカードが許されます。そして、プレフィックスも提示できます。 セミコロンで始まる行は、コメントとして無視されます。
簡単なブラックリスト・ファイルは、以下の通りかもしれません。
; 特定のファイルに一致します。 /var/www/broken.php ; x で始まるすべてのファイルに一致するプレフィックス /var/www/x ; ワイルドカード一致です。 /var/www/*-broken.php
opcache.max_file_size
integer
キャッシュできるファイル・サイズの最大。(バイト単位) これが 0 の場合、すべてのファイルがキャッシュされます。
opcache.consistency_checks
integer
ゼロ以外の場合、OPcache は、リクエスト N 回毎にキャッシュのチェックサムを検証します。 N は、この設定ディレクティブの値です。 パフォーマンスを損なうので、これはデバッグ時のみ有効にすべきです。
opcache.force_restart_timeout
integer
キャッシュがアクティブではない場合に、スケジュールされた再起動が始まるのを待つ時間の長さ。(秒単位) タイムアウトに達すると、OPcache は何か具合が悪いとみなして、リスタートできるようにするためにキャッシュのロックを所持する処理を殺します。
opcache.log_verbosity_level が 3 以上の場合、エラー発生時にエラーログに記録されます。
opcache.error_log
string
エラーに対するエラーログ。 空の文字列は、stderr と同様に扱われ、 結果として標準エラー(ほとんどの場合、Web サーバーのエラーログです)に送られるログになります。
opcache.log_verbosity_level
integer
ログ冗長レベルです。 デフォルトでは、致命的エラー(レベル 0 )およびエラー(レベル 1 )だけが記録されます。 利用できる他のレベルは、警告(レベル 2 )、情報メッセージ(レベル 3 )およびデバッグ・メッセージ(レベル 4 )です。
opcache.preferred_memory_model
string
OPcache が使用する優先のメモリ・モデル。 空のままにすると、OPcache は最も適切なモデルを選びます。 それは実質的にすべての場合に正しいふるまいです。
可能な値には、mmap、shm、 posix および win32 があります。
opcache.protect_memory
boolean
スクリプト実行中に予期しない書込みから共有メモリを保護する。 これは、内部のデバッギングだけに役立ちます。
opcache.mmap_base
string
Windows 上で共有メモリ・セグメントに使用される基底。 すべての PHP 処理は、共有メモリを同じアドレス空間にマップしなければいけません。 このディレクティブを使用すると、"Unable to reattach to base address" (基底アドレスに再アタッチできません) というエラーを修復できます。