ホームページ >バックエンド開発 >PHPチュートリアル >PHP キャッシュ モジュール キャッシュ (APC)_PHP チュートリアル
APC は Alternative PHP Cache の略称で、無料で公開されている PHP 用に最適化されたコード キャッシュです。これは、PHP 中間コードをキャッシュおよび最適化するための、無料でオープンかつ堅牢なフレームワークを提供するために使用されます。
1.PHP 構成 APC
APC モジュールを有効にするには、extension=php_apc.dll の前のコメントを削除する必要があります。
APC モジュールの設定パラメータは次のとおりです:
apc.有効化
タイプ: ブール型
apc.enabled を 0 に設定すると、APC が無効になります。これは主に、APC を静的に PHP にコンパイルする場合に役立ちます。これを無効にする他に方法がないためです (DSO としてコンパイルする場合、php.ini の拡張行をコメント アウトできます)。
apc.shm_segments
タイプ: 整数
コンパイル キャッシュに割り当てられた共有メモリ ブロックの数。 APC が共有メモリを使い果たし、apc.shm_size をシステムで許可される最大値に設定している場合は、このパラメータの値を増やしてみることができます。
apc.shm_size
タイプ: 整数
各共有メモリ ブロックのサイズは MB 単位です。デフォルトでは、一部のシステム (ほとんどの BSD バリアントを含む) では、共有メモリ ブロック サイズの制限が非常に低く設定されています。
apc.最適化
タイプ: 整数
最適化レベル。最適化を無効にするには 0 に設定します。値が大きいほど、より強力な最適化が使用されます。多少の速度向上が期待できます。これはまだ実験的な性質のものです。
apc.num_files_hint
タイプ: 整数
Web サーバーに含まれ、要求されているさまざまなソース ファイルの数を示します。よくわからない場合は、0 に設定するか省略してください。この設定は、主に何千ものソース ファイルがあるサイトで役立ちます。
apc.ttl
タイプ: 整数
キャッシュ内のキャッシュ エントリの位置が別のエントリで必要になる場合、キャッシュ内のキャッシュ エントリの位置がアイドル状態にできる秒数を考慮する必要があります。このパラメータを 0 に設定すると、キャッシュが古いエントリでいっぱいになり、新しいエントリがキャッシュされなくなる可能性があります。
apc.gc_ttl
タイプ: 整数
キャッシュ エントリがガベージ コレクション リスト内で存続する秒数。この値は、キャッシュされたソース ファイルが実行され、同時にサーバー プロセスが停止した場合のエラー保護を提供します。そのソース ファイルが変更された場合、古いバージョンのキャッシュ エントリに割り当てられたメモリは、このパラメータで設定された TTL 値に達するまで再利用されません。 0 に設定すると、この機能が無効になります。
apc.cache_by_default
タイプ: ブール型
デフォルトはオンですが、オフに設定して、プラス記号で始まる apc.filters とともに使用すると、ファイルはフィルターに一致する場合にのみキャッシュされます。
apcフィルター
タイプ: 文字列
POSIX 拡張正規表現のカンマ区切りのリスト。いずれかのパターンがソース ファイル名と一致する場合、そのファイルはキャッシュされません。一致に使用されるファイル名は、絶対パスではなく、include/require に渡されたファイル名であることに注意してください。正規表現の最初の文字が + の場合、その式は、その式に一致するファイルがキャッシュされることを意味し、最初の文字が - の場合、一致するファイルはキャッシュされません。 - はデフォルト値なので省略できます。
apc.mmap_file_mask
タイプ: 文字列
--enable-mmap (デフォルトで有効) を使用して APC が MMAP サポートでコンパイルされた場合、ここでの値は mmap モジュールに渡される mktemp スタイルのファイル マスクです (推奨値は「/tmp/apc.XXXXXX」です)。このマスクは、メモリ マップ領域をファイル バックアップするか共有メモリ バックアップするかを決定するために使用されます。ファイルに基づくダイレクト メモリ マッピングの場合は、「/tmp/apc.XXXXXX」 (正確に 6 つの X) のように設定します。 POSIX スタイルの shm_open/mmap を使用するには、「/apc.shm.XXXXXX」に設定する必要があります。また、これを「/dev/zero」に設定して、匿名でマップされたメモリにカーネルの「/dev/zero」インターフェイスを使用することもできます。このディレクティブを定義しないと、匿名マッピングの使用が強制されます。
apc.slam_defense
タイプ: 整数
非常に負荷の高いサーバーでは、サービスを開始するかファイルを変更するかにかかわらず、同じファイルを同時にキャッシュしようとする複数のプロセスの競合が発生します。このオプションは、プロセスがキャッシュされていないファイルのキャッシュ試行をスキップする割合を設定します。または、これを単一プロセスがキャッシュをスキップする確率と考えてください。たとえば、apc.slam_defense を 75 に設定すると、プロセスは 75% の確率でキャッシュされていないファイルをキャッシュしないことになります。したがって、設定を高くすると、キャッシュの衝突確率が低下する可能性が高くなります。この機能を無効にするには、0 に設定します。
apc.file_update_protection
タイプ: 整数
実行中のサーバー上のファイルを変更する場合は、アトミック操作を実行する必要があります。つまり、最初に一時ファイルを書き込み、終了したらファイルの名前を最終的な場所に変更 (mv) します。多くのテキスト エディタ、cp、tar、およびその他の同様のプログラムは、このようには動作しません。これは、ファイルの書き込み中にファイルにアクセスして (キャッシュする) 機会があることを意味します。 apc.file_update_protection の設定により、キャッシュによる新しいファイルのマーク付けが遅延します。デフォルト値は 2 です。これは、ファイルの変更時間がアクセス時間から 2 秒未満であることが判明した場合、ファイルはキャッシュされないことを意味します。不運なユーザーが書きかけのファイルにアクセスすると、奇妙な動作が発生する可能性がありますが、少なくとも永続的なものではありません。ファイルを更新するためにアトミック操作を頻繁に使用していることが確実な場合は、次のことができます。
この保護をオフにするには、このパラメータを 0 に設定します。システムに IO 操作が殺到し、更新プロセスに 2 秒以上かかる場合は、この値を増やす必要がある場合があります。
apc.enable-cli
タイプ: 整数
主にテストとデバッグ用です。 CLI バージョンの PHP の APC 機能を有効にします。一般に、CLI リクエストごとに APC のキャッシュを作成、移植、破棄することは考えられませんが、さまざまなテスト状況では、CLI バージョンで APC を有効にするのは簡単です。
ケース:
apc.有効 = 1
apc.shm_segments = 1
apc.shm_size = 64
apc.最適化 = 0
apc.num_files_hint = 1000
apc.ttl = 0
apc.gc_ttl = 3600
apc.cache_by_default = オン
apc.slam_defense = 0
apc.file_update_protection = 2
apc.enable_cli = 0
apc.stat=0
2. APC キャッシュの場合
りー