好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > PHP緩存系統APCu擴展的使用

PHP緩存系統APCu擴展的使用

熱門標簽:合肥ai電銷機器人費用 凱立德地鐵站地圖標注 滄州電銷外呼系統價格 上海400客服電話怎么申請 銀行信貸電話機器人 400電話個人能不能辦理 手機外呼系統什么原理 溫州外呼系統招商 天津電銷外呼系統違法嗎

想必大家都使用過 memcached 或者 redis 這類的緩存系統來做日常的緩存,或者用來抗流量,或者用來保存一些常用的熱點數據,其實在小項目中,PHP 也已經為我們準備好了一套簡單的緩存系統,完全能夠應付我們日常普通規模站點的開發。這一套擴展就是 APCu 擴展。

APCu 擴展

APCu 擴展是 APC 擴展的升級,APC 擴展已經不維護了。這兩套擴展其實都是基于 opcode caching 。也就是 PHP 自身的 opcode 來實現的緩存能力。

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"));

正常的使用都是比較簡單的,我們添加各種類型的數據都可以正常存入緩存。不過需要注意的是,我們可以直接保存對象進入 APCu 緩存中,不需要將它序列化或者JSON成字符串,系統會自動幫我們序列化。

apcu_add(string \key , mixedkey,mixedvar [, int ttl = 0 ]) 方法就是普通的添加一個緩存,ttl=0])方法就是普通的添加一個緩存,ttl 可以設置過期時間,也是以秒為單位,如果不設置就是長期有效的。注意,APCu 的緩存時限在一次 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 ]) 這個函數的作用是如果 $key 這個緩存不存在,則執行 $generator 這個匿名函數,并將 $key 做為鍵值傳遞進去,然后生成也就是 return 一個內容做為這個緩存的值。

var_dump(apcu_cache_info());

最后,如果我們想查看當前系統中的所有 APCu 緩存信息的時候,直接用這個 apcu_cache_info() 函數即可。

總結

當緩存中的數據非常多時,它還提供了一個 APCUIterator 迭代器方便我們進行緩存信息的循環查詢及相關統計。總之,這一套系統是非常方便的一套小規模的緩存系統,在日常開發中完全可以嘗試用到一些小功能上。

測試代碼:

github.com/zhangyue050…

以上就是PHP緩存系統APCu擴展的使用的詳細內容,更多關于PHP緩存系統APCu擴展的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • PHP的命令行擴展Readline相關函數的使用
  • PHP的runkit擴展如何使用
  • 如何動態查看及加載PHP擴展
  • Thinkphp使用Zxing擴展庫解析二維碼內容圖文講解
  • PHP擴展安裝方法步驟解析
  • PHP 擴展Memcached命令用法實例總結
  • PHP擴展類型及安裝方式解析
  • 如何使用Zephir輕松構建PHP擴展

標簽:溫州 洛陽 怒江 赤峰 酒泉 金華 七臺河 白城

巨人網絡通訊聲明:本文標題《PHP緩存系統APCu擴展的使用》,本文關鍵詞  PHP,緩存,系統,APCu,擴展,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP緩存系統APCu擴展的使用》相關的同類信息!
  • 本頁收集關于PHP緩存系統APCu擴展的使用的相關信息資訊供網民參考!
  • 推薦文章