ホームページ  >  記事  >  バックエンド開発  >  php の詳細な分析 apc_PHP チュートリアル

php の詳細な分析 apc_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:10:17893ブラウズ

apc の定義: apc は、オープンで無料の php オペコード キャッシュです。その目標は、PHP 中間コードをキャッシュおよび最適化するための、無料でオープンかつ健全なフレームワークを提供することです。
APC の一般的に使用される関数:
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(string key) ) apc_store によって保存されたコンテンツを削除します
7.apc_add(string key,mixd var [, int ttl]) 変数をデータ ストレージにキャッシュします (変数が以前に保存されていない場合のみ)
8.apc_exists(mix key) かどうかを確認します1 つ以上の APC キーがあります 名前は存在します
9.apc_delete_file(mixed tags) 指定されたファイルのキャッシュをオペコード キャッシュから削除します
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 変数の場合は、apc_store 関数を使用できます。ネットワーク転送プロトコル tcp を経由する必要がないため、apc を使用する方が優れています。apc は、この関数を使用して頻繁に変更されるユーザー データをキャッシュするのには適していません。 apc_store を使用すると、いくつかの奇妙な現象が発生します。apc 自体は配布をサポートしていません。
一般的な APC 設定:
1. APC に割り当てられるメモリの量。ini オプション apc.shm_size (整数) がこの設定を制御します。デフォルトは 30M
2 です。apc が要求されるたびにファイルの変更をチェックするかどうかは、ini オプション apc.stat によって制御されます。これは、スクリプトが要求されるたびに、スクリプトが更新されるかどうかを意味します。更新されると、自動的に再コンパイルされてキャッシュされます。コンパイルされたコンテンツはパフォーマンスに比例して影響するため、これは 0
3 に設定されます。 apc.filters を使用してキャッシュするスクリプトの数が少なくなります。最適なパフォーマンスを実現するためのスピンロック (スピン) ロック メカニズム
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 デーモンのシャットダウンまで) であり、apc を使用します。 memcache よりも優れています。 (ネットワーク伝送プロトコルを経由する必要はありません)
7.apc は、頻繁に変更されるユーザーデータを apc_store() 関数を通じてキャッシュするのには適しておらず、いくつかの奇妙な現象が発生します。

例:

$constants = array('APC_FILE'=>'apc.php','AUTHOR'=>'tim');apc_define_constants('memb',$constants );
apc_load_constants('memb');
//echo APC_FILE;
//echo AUTHOR;

if(!apc_fetch('time1')) apc_store('time1',time());
if(!apc_fetch(' time2')) apc_store('time2',time(),2);
//echo apc_fetch('time1');
//echo apc_fetch('time2');

class a{
public function b () {echo 'success';}
}
apc_store('obj',new a());
$a = apc_fetch('obj');
//$a-b();


$ret = apc_exists (array ('foo', 'donotexist', 'bar'));
//array(2) { ["foo"]=> bool(true) ["bar"]=>

?>
追加の詳細な設定手順:
apc.cache_by_default = on
;sys; デフォルトですべてのファイルのバッファリングを有効にするかどうか。
; オフに設定し、プラス記号で始まる apc.filters ディレクティブと一緒に使用すると、ファイルはフィルターに一致する場合にのみキャッシュされます。

apc.enable_cli = off
;sys
; cli バージョンで apc 機能を有効にするかどうかは、テストとデバッグの目的でのみこのコマンドをオンにします。

apc.enabled = on
; apc が静的に php にコンパイルされており、それを無効にしたい場合は、これが唯一の方法です。

apc.file_update_protection = 2
;sys
; 実行中のサーバー上のファイルを変更する場合は、アトミック操作を実行する必要があります。
; つまり、最初に一時ファイルに書き込み、次にファイルの名前を最終的な名前に変更 (mv) します。
; テキスト エディターや cp や tar などのプログラムはこのように動作しないため、不完全なファイルがバッファリングされる可能性があります。
; デフォルト値 2 は、ファイルへのアクセス時に変更時間がアクセス時間から 2 秒未満であることが判明した場合、バッファリングは実行されないことを意味します。
; 運が悪い訪問者は破損したコンテンツを受け取る可能性がありますが、その悪影響はキャッシュによって拡大されません。
; すべての更新操作がアトミックであることを確認できる場合は、0 を指定してこの機能をオフにすることができます。
; IO 操作が多いためにシステムの更新が遅い場合は、この値を増やす必要があります。

apc.filters =
;sys
; posix 拡張正規表現のカンマ区切りリスト。
; ソース ファイル名がいずれかのパターンに一致する場合、ファイルはキャッシュされません。
; マッチングに使用されるファイル名は、絶対パスではなく、include/require に渡されるファイル名であることに注意してください。
; 正規表現の最初の文字が「+」の場合は、その式に一致するファイルがキャッシュされることを意味します。最初の文字が「-」の場合は、一致したファイルはキャッシュされません。 「-」はデフォルト値であり省略可能です。

apc.ttl = 0
;sys
; キャッシュ エントリがバッファ内に存在できる秒数。 0 はタイムアウトしないことを意味します。推奨値は7200~36000です。
; 0 に設定すると、バッファが古いキャッシュ エントリでいっぱいになり、新しいエントリがキャッシュされなくなる可能性があります。

apc.user_ttl = 0
;sys
; apc.ttl と似ていますが、各ユーザーの推奨値は 7200 ~ 36000 です。
; 0 に設定すると、バッファが古いキャッシュ エントリでいっぱいになり、新しいエントリがキャッシュされなくなる可能性があります。

apc.gc_ttl = 3600
;sys
; キャッシュ エントリがガベージ コレクション テーブルに存在できる秒数。
; この値は、キャッシュされたソース ファイルの実行中にサーバー プロセスがクラッシュし、ソース ファイルが変更された場合でも、この ttl 値に達するまで、古いバージョンに割り当てられたメモリは再利用されないための安全策を提供します。 。
; この機能を無効にするには、ゼロに設定します。

apc.include_once_override = off
;sys
; 現在、このコマンドに関するドキュメントはありません。http://pecl.php.net/bugs/bug.php?id=8754
; それ以外の場合は、オフのままにしてください。予期しない結果が生じる可能性があります。

apc.max_file_size = 1m
;sys
; このサイズを超えるファイルがキャッシュされないようにします。

apc.mmap_file_mask =
;sys
; –enable-mmap (デフォルトで有効) を使用して 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
;sys
; Web サーバーに含めたりリクエストしたりできるさまざまなソース ファイルのおおよその数 (推奨値は 1024 ~ 4096)。
; よくわからない場合は、0 に設定してください。この設定は主に数千のソース ファイルを含むサイトに使用されます。

apc.optimization = 0
; 最適化レベル (推奨値は 0)。
; 正の整数値はオプティマイザーを有効にすることを意味し、値が大きいほどより積極的な最適化が使用されます。
; 値を大きくすると速度の改善が非常に限定される可能性がありますが、現在は実験段階です。

apc.report_autofilter = off
;sys
; 早期/遅延バインディングの理由により自動的にキャッシュされないすべてのスクリプトを記録するかどうか。

apc.shm_segments = 1
;sys
; コンパイラ バッファに割り当てられる共有メモリ ブロックの数 (推奨値は 1)。
; apc が共有メモリを使い果たし、apc.shm_size ディレクティブをシステムで許容される最大値に設定している場合は、この値を増やしてみてください。

apc.shm_size = 30
;sys
; 各共有メモリ ブロックのサイズ (MB 単位、推奨値は 128 ~ 256)。
; 一部のシステム (ほとんどの bsd バリアントを含む) のデフォルトの共有メモリ ブロック サイズは非常に小さいです。

apc.slam_defense = 0
;sys (このコマンドの使用には反対です。apc.write_lock コマンドを使用することをお勧めします)
; サービスを開始しているかファイルを変更しているかにかかわらず、非常に負荷の高いサーバーでは、
; 複数のプロセスが同時にファイルをキャッシュしようとしたため、競合状態が発生した可能性があります。
; このディレクティブは、キャッシュされていないファイルを処理するときにキャッシュ手順をスキップするプロセスの割合を設定するために使用されます。
; たとえば、これを 75 に設定すると、キャッシュされていないファイルが見つかったときに 75% の確率でキャッシュされないため、衝突の可能性が低くなります。
; この機能を無効にするには、0 に設定することをお勧めします。

apc.stat = on
;sys
; スクリプトの更新チェックを有効にするかどうか。
; このコマンドの値を変更する場合は十分に注意してください。
; デフォルト値は、apc がリクエストされるたびにスクリプトが更新されたかどうかをチェックし、更新された場合はコンパイルされたコンテンツを自動的に再コンパイルしてキャッシュすることを意味します。ただし、これを行うとパフォーマンスに悪影響が生じます。
; オフに設定すると、チェックは実行されないため、パフォーマンスが大幅に向上します。
; ただし、更新されたコンテンツを有効にするには、Web サーバーを再起動する必要があります。
; このディレクティブは include/require ファイルにも有効です。ただし、相対パスを使用する場合、apc は include/require するたびにファイルの場所を確認する必要があることに注意してください。
; 絶対パスを使用するとチェックがスキップされる可能性があるため、include/require 操作には絶対パスを使用することをお勧めします。

apc.user_entries_hint = 100
;sys
; num_files_hint ディレクティブに似ていますが、ユーザーごとに異なります。
; よくわからない場合は、0 に設定してください。

apc.write_lock = on
;sys
; 書き込みロックを有効にするかどうか。
; 非常に負荷の高いサーバーでは、サービスの開始時やファイルの変更時に、複数のプロセスが同時にファイルをキャッシュしようとするため、競合状態が発生する可能性があります。
; このディレクティブを有効にすると、競合状態を回避できます。

apc.rfc1867 = off
;sys
; このコマンドをオンにすると、ファイル フィールドの直前に apc_upload_progress フィールドを含むアップロード ファイルごとに、apc は、upload_ のユーザー キャッシュ エントリを自動的に作成します。 apc_upload_progress フィールド値)。

http://www.bkjia.com/PHPjc/327153.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327153.html技術記事 apc の定義: apc は、オープンで無料の php オペコード キャッシュです。その目標は、PHP 中間コードをキャッシュおよび最適化するための、無料でオープンかつ健全なフレームワークを提供することです。 APC でよく使用される関数: 1...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。