- apc.enabled
boolean
apc.enabled を 0 にすることで APC を無効にできます。
APC が静的にコンパイルされて PHP に組み込まれており、他に無効にする
手段がない場合などに有用です(DSO としてコンパイルされている場合は、
単に php.ini の中の extension
という行をコメントアウトするだけで無効にできます)。
- apc.shm_segments
integer
コンパイラキャッシュのために割り当てる共有メモリセグメントの数。
APC が割り当て済みの共有メモリを使い切ってしまっているが
すでにシステムが許す限り apc.shm_size を拡大している
といった場合に、この値を大きくすることを試みます。
- apc.shm_size
integer
個々の共有メモリセグメントの大きさを MB 単位で指定します。
デフォルトで、共有メモリセグメントの大きさが非常に小さく設定されている
システムもあります(大半の BSD 系システムがこれに含まれます)。
- apc.optimization
integer
最適化レベル。ゼロは最適化を無効にし、値を大きくするほど
最適化のレベルが高くなります。わずかながら速度の向上が
期待できます。この項目は実験的なものです。
- apc.num_files_hint
integer
Web サーバで読み込まれるソースファイルの総数についての
「ヒント」。よくわからない場合はゼロを指定するか、単に
無視してください。何千ものソースファイルを扱っているような
サイトで有用です。
- apc.ttl
integer
キャッシュされているエントリが、他のエントリに割り当てられるまで
スロットに残っていることの可能な秒数。ゼロのままにしておくと、
キャッシュの中身が古いエントリでいっぱいになってしまい、
新しいエントリがキャッシュできなくなります。
- apc.gc_ttl
integer
キャッシュエントリがガベージコレクションのリストに残り続ける秒数。
ソースファイルのキャッシュ中にサーバプロセスが死んだ場合の安全装置と
なります。ソースファイルが変更された場合、メモリに割り当てられている
古いバージョンはこの TTL に達するまで再読み込みされません。
この機能を無効にするには、ゼロを設定します。
- apc.cache_by_default
boolean
デフォルトで On です。しかし、これを Off にして
+ で始まる apc.filters
とともに使用することで、フィルタに一致したファイルのみを
キャッシュすることが可能です。
- apc.filters
string
カンマで区切られた、POSIX 拡張正規表現のリスト。ソースファイル名が
いずれかのパターンにマッチした場合、そのファイルはキャッシュされません。
マッチングに使用されるファイル名は include/require に渡される名前であり、
絶対パスではないことに注意しましょう。正規表現が + で
始まっている場合、その条件にマッチするファイルはキャッシュされます。
また - で始まっている場合は、条件にマッチするファイルは
キャッシュされません。デフォルトは - なので、これは
省略可能です。
- apc.mmap_file_mask
string
--enable-mmap を用いて MMAP サポートつきで
コンパイルされている場合、ここで mktemp 形式のファイルマスクを
指定します。mmap モジュールは、mmap されたメモリ領域をファイルに
置くか共有メモリに置くかを、これによって判断します。
ファイルベースの mmap を使用するには、この値を
/tmp/apc.XXXXXX
(正確に 6 つの X)のように指定します。
POSIX 形式の shm_open/mmap を使用するには、.shm
をマスクのどこかで指定します。例: /apc.shm.XXXXXX 。
また、/dev/zero を指定することで、カーネルの
/dev/zero インターフェースを使用した anonymous mmap
を使用することもできます。未定義の場合は、この方式が用いられます。
- apc.slam_defense
integer
非常にアクセスの多いサーバでは、サーバを起動したりファイルを書き換えたり
するたびに「多くのプロセスが」「同時に」「同じファイルを」キャッシュ
しようとすることになります。このオプションを指定すると、ある一定の
パーセンテージでファイルをキャッシュせずに利用するようにします。
あるいは、単一のプロセスがキャッシュ処理をスキップする確率と
考えることもできます。
たとえば、apc.slam_defense を 75
に設定すると、プロセスがキャッシュされていないファイルをキャッシュする
処理を 75% の確率で抑えられます。つまり、この値を大きく設定することで
キャッシュ処理の混雑を防ぐことが可能です。値を 0
に設定すると、この機能が無効になります。
- apc.file_update_protection
integer
稼動中の Web サーバ上のファイルを書き換える場合、それを原始的(atomic)
な手段で行うべきです。つまり、まずいったん一時ファイルに書き込み、
準備ができた時点でそれをリネーム(mv)して
正しい位置に移動します。多くのテキストエディタや cp、tar その他の
プログラムはこの方式ではありません。ということは、ファイルの書き込み中に
そのファイルがアクセスされる(そしてキャッシュされる)可能性がある
わけです。apc.file_update_protection は、
新しいファイルをキャッシュするまでの遅延を設定します。デフォルトは
2 秒で、ファイルの更新時刻(mtime)がアクセス時刻と
2 秒未満しか違わない場合はファイルをキャッシュしないという意味です。
更新の最中のファイルにアクセスしてしまった不幸な人には変なデータが
見えてしまいますが、少なくともその変な状態がキャッシュされてしまう
ことはありません。rsync などの原始的な更新を保証する方式を利用する
ことがわかっている場合は、値を 0 に設定することでこの機能を無効に
できます。更新処理に 2 秒以上かかるようなシステムを利用している
場合は、この値をもう少し大きくしたくなるかもしれません。
- apc.enable_cli
integer
たいていは、テストやデバッグ用に使用します。これを設定すると
CLI バージョンの PHP で APC を有効にします。通常は、すべての
CLI リクエストに対して APC キャッシュを作成/格納/削除したいとは
思わないでしょう。しかし、CLI バージョンの APC を簡単に作成できるように
しておくことは、多くのテストシナリオで有用です。