ホームページ >バックエンド開発 >PHPの問題 >PHP に付属するキャッシュ システムの詳細な紹介: APCu 拡張機能

PHP に付属するキャッシュ システムの詳細な紹介: APCu 拡張機能

醉折花枝作酒筹
醉折花枝作酒筹転載
2021-06-09 17:06:083180ブラウズ

この記事では、PHP: APCu 拡張機能に付属するキャッシュ システムについて詳しく説明します。一定の参考値があるので、困っている友達が参考になれば幸いです。

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 サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。