一般的な apc 機能、一般的な apc 構成、apc の利点など、php apc の関連知識を紹介し、困っている友人が参考にできるようにします。
apc 定義: apc は、オープンで無料の php オペコード キャッシュです。その目標は、PHP 中間コードをキャッシュおよび最適化するための、無料でオープンかつ健全なフレームワークを提供することです。 1. よく使われる関数: 1.apc_clear_cache() は APC キャッシュの内容をクリアします 2.apc_define_constants(string key,array constants,[,bool case_sensitive]) は、配列定数を定数としてキャッシュに追加します 3.apc_load_constants(string key) は定数キャッシュを取り出します 4.apc_store(string key,mixed var [, int ttl]) データをキャッシュに保存 5.apc_fetch(string key)は、apc_storeで保存されたキャッシュデータを取得します。 6.apc_delete(文字列キー) apc_storeで保存した内容を削除します 7.apc_add(string key,mixd var [, int ttl]) 変数をデータ ストレージにキャッシュします (変数が以前に格納されていない場合のみ) 8.apc_exists(mix key) は、1 つ以上の apc キー名が存在するかどうかを確認します。 9.apc_delete_file(混合キー)は、指定されたファイルのキャッシュをオペコードキャッシュから削除します 10.apc_compile_file(string filename [,bool atmic=true]) はフィルターとキャッシュ ファイルの制限をバイパスします 11.apc_cache_info(stringcache_type [,boollimited=false]) キャッシュの取得 i-type ミルクシェイク 注: apc_clear_cache はオペコード キャッシュ ファイルのみをクリアし、apc_delete はキャッシュ内の変数をクリアします。事前定義された変数の場合は、apc_define_constants 関数を使用できます。PHP 変数の場合は、memcache よりも apc を使用することをお勧めします。ネットワーク転送プロトコル tcp を経由する必要がありますが、apc は経由しません。apc_store 関数を使用して頻繁に変更されるユーザー データをキャッシュするのに適しています。apc 自体は配布をサポートしていません。 2. APC の共通設定: 1. apc に割り当てられるメモリの量。ini オプション apc.shm_size (整数) がこの設定を制御します。デフォルトは30Mです 2. apc が要求されるたびにファイルの変更を確認するかどうかは、ini オプション apc.stat によって制御されます。デフォルト値は 1 で、スクリプトが更新されるかどうかを意味します。コンテンツは自動的に再コンパイルされてキャッシュされ、パフォーマンスに比例した影響を与えるため、これは 0 に設定されます。 3.ini オプション apc.filters を使用してスクリプトのキャッシュを減らす 3. apcの利点: 1. スピンロック (スピン) ロック機構を使用して最高のパフォーマンスを実現します 2.apc は、apc キャッシュを監視および管理するための apc.php を提供します。 (注: 管理者名とパスワードを変更してください) 3.apc はデフォルトで mmap 匿名マッピングを通じて共有メモリを作成し、キャッシュ オブジェクトはこの大きなメモリ空間に格納されます。共有メモリはAPC自体によって管理されます 4. apc.shm_size、apc.num_files_hints、apc.user_entires_hint の値を最適な値に調整します。 5.php の定義済み定数では、apc _define——constants() 関数を使用できます。ただし、apc 開発者は、pecl Hidef の方がパフォーマンスが良く、定義を放棄するため非効率であると述べています。 6.apc_store、システム設定などの PHP 変数の場合、ライフサイクルはアプリケーション全体 (httpd デーモンから httpd デーモンのシャットダウンまで) であり、memcache よりも apc を使用する方が優れています。 (ネットワーク伝送プロトコルを経由する必要はありません) 7.apc は、apc_store() 関数によってキャッシュされたユーザー データを頻繁に変更するのには適しておらず、いくつかの奇妙な現象が発生します。 例: リーリー詳細な設定手順が添付されています: apc.cache_by_default = オン ;シス ; すべてのファイルに対してデフォルトでバッファリングを有効にするかどうか。 ; オフに設定し、プラス記号で始まる apc.filters ディレクティブと一緒に使用すると、ファイルはフィルターに一致する場合にのみキャッシュされます。 apc.enable_cli = オフ ;シス ; cli バージョンで apc 機能を有効にするかどうかは、テストとデバッグの目的でのみこのディレクティブをオンにします。 apc.enabled = オン ; apc を有効にするかどうか。apc が静的に php にコンパイルされており、それを無効にしたい場合は、これが唯一の方法です。 apc.file_update_protection = 2 ;シス ; 実行中のサーバー上のファイルを変更する場合は、アトミック操作を実行する必要があります。 ; つまり、最初に一時ファイルに書き込み、次にファイルの名前を最終的な名前に変更 (mv) します。 ; テキスト エディターや cp や tar などのプログラムはこのように動作しないため、不完全なファイルがバッファリングされる可能性があります。 ; デフォルト値 2 は、ファイルにアクセスするときに、変更時間がアクセス時間から 2 秒未満であることが判明した場合、バッファリングは実行されないことを意味します。 ; 運が悪い訪問者は破損したコンテンツを受け取る可能性がありますが、その悪影響はキャッシュによって増幅されません。 ; すべての更新操作がアトミックであることを確認できる場合は、0 を指定してこの機能をオフにすることができます。 ; IO 操作が多いためにシステムの更新が遅い場合は、この値を増やす必要がある場合があります。 apc.filters = ;シス ; POSIX 拡張正規表現のカンマ区切りのリスト。 ; ソース ファイル名がいずれかのパターンに一致する場合、ファイルはキャッシュされません。 ; マッチングに使用されるファイル名は、絶対パスではなく、include/require に渡されるファイル名であることに注意してください。 ; 正規表現の最初の文字が「+」の場合は、その表現に一致するファイルがキャッシュされることを意味します。 ; 最初の文字が「-」の場合、一致するものはキャッシュされません。 「-」はデフォルト値であり省略可能です。 apc.ttl = 0 ;シス ; キャッシュ エントリがバッファ内に存在できる秒数。 0 はタイムアウトしないことを意味します。推奨値は7200~36000です。 ; 0 に設定すると、バッファが古いキャッシュ エントリでいっぱいになり、新しいエントリがキャッシュされなくなる可能性があります。 apc.user_ttl = 0 ;シス ; apc.ttl と似ていますが、各ユーザーの推奨値は 7200 ~ 36000 です。 ; 0 に設定すると、バッファが古いキャッシュ エントリでいっぱいになり、新しいエントリがキャッシュされなくなる可能性があります。 apc.gc_ttl = 3600 ;シス ; キャッシュ エントリがガベージ コレクション テーブルに存在できる秒数。 ; この値は、キャッシュされたソース ファイルの実行中にサーバー プロセスがクラッシュした場合でも安全対策を提供します。 ; ソース ファイルが変更されている場合、古いバージョンに割り当てられたメモリは、この ttl 値に達するまで再利用されません。 ; この機能を無効にするには、0 に設定します。 apc.include_once_override = オフ ;シス ; 現在、このコマンドに関するドキュメントはありません。http://pecl.php.net/bugs/bug.php?id=8754 を参照してください。 ; 予期しない結果が生じる可能性があるため、オフにしておいてください。 apc.max_file_size = 1m ;シス ; このサイズを超えるファイルがキャッシュされないようにします。 apc.mmap_file_mask = ;シス ; mmap サポートが --enable-mmap (デフォルトで有効) を使用して apc 用にコンパイルされている場合、 ; ここでの値は、mmap モジュールに渡される mktemp スタイルのファイル マスクです (推奨値は「/tmp/apc.xxxxxx」です)。 ; このマスクは、メモリ マップ領域をファイル バックアップするか共有メモリ バックアップするかを決定するために使用されます。 ; 直接ファイルバックアップメモリマッピングの場合は、「/tmp/apc.xxxxxx」(正確には 6 つの x)に設定します。 ; posix スタイルの shm_open/mmap を使用するには、「/apc.shm.xxxxxx」に設定する必要があります。 ; 「/dev/zero」に設定して、匿名でマップされたメモリにカーネルの「/dev/zero」インターフェイスを使用することもできます。 ; このディレクティブを定義しないと、匿名マッピングの使用が強制されます。 apc.num_files_hint = 1000 ;シス ; Web サーバーに含めたりリクエストしたりできるさまざまなソース ファイルのおおよその数 (推奨値は 1024 ~ 4096)。 ; よくわからない場合は、0 に設定してください。この設定は主に、数千のソース ファイルを含むサイトに使用されます。 apc.最適化 = 0 ; 最適化レベル (推奨値は 0)。 ; 正の整数値はオプティマイザーを有効にし、値が大きいほどより積極的な最適化を使用します。 ; 値を大きくすると、速度の改善が非常に限定される可能性がありますが、現在は実験段階です。 apc.report_autofilter = オフ ;シス ; 早期/遅延バインディングの理由により自動的にキャッシュされないすべてのスクリプトを記録するかどうか。 apc.shm_segments = 1 ;シス ; コンパイラ バッファに割り当てられる共有メモリ ブロックの数 (推奨値は 1)。 ; apc が共有メモリを使い果たし、apc.shm_size ディレクティブがシステムで許容される最大値に設定されている場合、 ; この値を増やしてみてください。 apc.shm_size = 30 ;シス ; 各共有メモリ ブロックのサイズ (MB 単位、推奨値は 128 ~ 256)。 ; 一部のシステム (ほとんどの BSD バリアントを含む) のデフォルトの共有メモリ ブロック サイズは非常に小さいです。 apc.slam_defense = 0 ;sys (このコマンドの使用には反対です。apc.write_lock コマンドを使用することをお勧めします) ; 非常に負荷の高いサーバーでは、サービスの開始やファイルの変更など、 ; 複数のプロセスが同時にファイルをキャッシュしようとするため、競合状態が発生する可能性があります。 ; このディレクティブは、キャッシュされていないファイルを処理するときにプロセスがキャッシュ手順をスキップする割合を設定するために使用されます。 ; たとえば、これを 75 に設定すると、キャッシュされていないファイルが見つかった場合に 75% の確率でキャッシュされないため、衝突の可能性が低くなります。 ; この機能を無効にするには、0 に設定することをお勧めします。 apc.stat = オン ;シス ; スクリプトの更新チェックを有効にするかどうか。 ; このディレクティブの値を変更する場合は十分に注意してください。; デフォルト値 on は、スクリプトが要求されるたびにスクリプトが更新されたかどうかを apc がチェックすることを意味します。 ; 更新された場合は、コンパイルされたコンテンツを自動的に再コンパイルしてキャッシュします。ただし、これを行うとパフォーマンスに悪影響が生じます。 ; オフに設定すると、チェックは実行されないため、パフォーマンスが大幅に向上します。 ; ただし、更新されたコンテンツを有効にするには、Web サーバーを再起動する必要があります。 ; このディレクティブは include/require ファイルにも有効です。しかし、注意しなければならないのは、 ; 相対パスを使用する場合、apc は include/require ごとにファイルの場所を確認する必要があります。 ; 絶対パスを使用するとチェックがスキップされる可能性があるため、include/require 操作には絶対パスを使用することをお勧めします。 apc.user_entries_hint = 100 ;シス ; num_files_hint ディレクティブに似ていますが、ユーザーごとに異なります。 ; よくわからない場合は、0 に設定してください。 apc.write_lock = オン ;シス ; 書き込みロックを有効にするかどうか。 ; 非常に負荷の高いサーバーでは、サービスの開始やファイルの変更など、 ; 複数のプロセスが同時にファイルをキャッシュしようとするため、競合状態が発生する可能性があります。 ; 競合状態を回避するには、このディレクティブを有効にします。 apc.rfc1867 = オフ ;シス ; このディレクティブをオンにした後、ファイルフィールドの直前に apc_upload_progress フィールドを含むアップロードされたファイルごとに、 ; apc は、upload_ のユーザー キャッシュ エントリ (apc_upload_progress フィールドの値) を自動的に作成します。 |