この記事では、PHP: APCu 拡張機能に付属するキャッシュ システムについて詳しく説明します。一定の参考値があるので、困っている友達が参考になれば幸いです。
毎日のキャッシュ、トラフィックへの抵抗、または一般的に使用されるホットスポット データの保存に、memcached や redis などのキャッシュ システムを誰もが使用したことがあると思います。プロジェクトに合わせて、PHP は私たちのためにシンプルなキャッシュ システムも用意しており、日常的な通常規模のサイトの開発を十分に処理できます。この拡張セットは APCu 拡張です。
APCu 拡張機能
APCu 拡張機能は、APC 拡張機能のアップグレードであり、現在はメンテナンスされていません。拡張機能の両方のセットは、実際にはオペコード キャッシュに基づいています。つまり、PHP 自体のオペコードによって実装されるキャッシュ機能です。
APCu のインストールは、通常の PHP 拡張機能とまったく同じで、非常に簡単です。最も重要なことは、この拡張機能が非常に小さいことです。ダウンロードとインストールはどちらも数秒で完了します。したがって、小規模プロジェクトに非常に便利に適用でき、PHP によってネイティブにサポートされており、ポートなどの追加構成は必要ありません。
メソッドの説明
キャッシュ システムが一般的に備えている追加、削除、クエリ、および自動増加の機能はすべて APCu 拡張機能に実装されています。
- #apcu_add — 新しいキャッシュを作成します
- apcu_cache_info —APCu
## のすべてのキャッシュ情報を表示します # apcu_cas — キャッシュされた値を新しい値に更新します apcu_clear_cache — すべてのキャッシュをクリアします apcu_dec — キャッシュされた値をデクリメントします-
apcu_delete — キャッシュされたコンテンツを削除します apcu_enabled — 現在の環境で APCu キャッシュが有効かどうか apcu_entry —キャッシュ エンティティをアトミックに生成する apcu_exists — キャッシュが存在するかどうかを確認する apcu_fetch — キャッシュをクエリする-
apcu_inc — キャッシュ値の自動インクリメント apcu_sma_info — キャッシュされた共有メモリ情報のクエリ apcu_store — キャッシュの保存 #使用デモ
apcu_add("int", 1);
apcu_add("string", "I'm String");
apcu_add("arr", [1,2,3]);
class A{
private $apc = 1;
function test(){
echo "s";
}
}
apcu_add("obj", new A);
var_dump(apcu_fetch("int"));
var_dump(apcu_fetch("string"));
var_dump(apcu_fetch("arr"));
var_dump(apcu_fetch("obj"));
ログイン後にコピー
通常の使い方は比較的簡単で、各種データを追加すると普通にキャッシュに保存できます。ただし、オブジェクトや JSON を文字列にシリアル化せずに、オブジェクトを APCu キャッシュに直接保存できることに注意してください。システムが自動的にオブジェクトをシリアル化します。
apcu_add(string \$key ,mixed $var [, int $ttl = 0 ]) メソッドは通常通りキャッシュを追加します。$ttl は有効期限を秒単位で設定できます。設定されていない場合は、長期的に有効になります。 APCu のキャッシュ時間制限は 1 つの CLI 内で有効であるため、CLI を再度呼び出すと、最後の CLI で設定されたキャッシュ コンテンツは取得されないことに注意してください。 PHP-FPMでは、PHP-FPMまたはFastCGIを再起動するとキャッシュが無効になります。
次に、あまり一般的ではないメソッドのテストに焦点を当てます。
apcu_cas("int", 1, 2);
var_dump(apcu_fetch("int"));
// Warning apcu_cas() expects parameter 2 to be int
apcu_cas("string", "I'm String", "I'm New String");
ログイン後にコピー
apcu_cas(string $key, int $old, int $new) は、$old 値を $new 値に変更します。変更できるのは数値型の内容のみです。文字列変更の場合は、 、エラーが報告されます。この機能の利点は何ですか?その最大の利点は、アトミックであること、つまり、高い同時実行性の影響を受けないことです。これに似ているのが apcu_store(string $key,mixed $var [, int $ttl = 0]) メソッドですが、このメソッドはキャッシュの内容を変更するだけです。キャッシュ キーが存在しない場合は、新しいキャッシュ キーを作成します。型による制限はなく、もちろんアトミックではありません。
apcu_entry("entry", function($key){
return "This is " . $key;
});
var_dump(apcu_fetch("entry"));
ログイン後にコピー
apcu_entry(string $key , callable $generator [, int $ttl = 0 ]) この関数の機能は、匿名関数 $generator を実行し、$key のキャッシュが存在しない場合に $key を変更することです。それをキー値として渡し、コンテンツを生成してこのキャッシュの値として返します。
var_dump(apcu_cache_info());
ログイン後にコピー
最後に、現在のシステム内のすべての APCu キャッシュ情報を表示したい場合は、apcu_cache_info() 関数を直接使用できます。
概要
キャッシュ内に大量のデータがある場合、ループ クエリやキャッシュ情報の関連統計の実行を容易にする APCUIterator イテレータも提供します。つまり、このシステムは非常に便利な小規模キャッシュ システムであり、日常の開発でいくつかの小さな機能を試してみることができます。
テスト コード:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202004/source/%E6%88%91%E4%BB%AC%E4%B9%9F%E6%9C%89%E8%87%AA%E5%B8%A6%E7%9A%84%E7%BC%93%E5%AD%98%E7%B3%BB%E7%BB%9F%EF%BC%9APHP%E7%9A%84APCu%E6%89%A9%E5%B1%95.php
ログイン後にコピー
推奨学習:
php ビデオ チュートリアル
以上がPHP に付属するキャッシュ システムの詳細な紹介: APCu 拡張機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。