PHP8 apcu_entry

2023-08-28 15:46 更新

(PECL apcu >= 5.1.0)

apcu_entry—自動獲取或生成緩存項

說明

apcu_entry(string $key, callable $generator, int $ttl = 0): mixed

自動嘗試在緩存中查找key,如果找不到則調(diào)用generator,并將key作為唯一參數(shù)傳遞。然后將調(diào)用的返回值與可選指定的ttl一起緩存并返回。

注意:當(dāng)控制進(jìn)入apcu_entry()時,緩存的鎖被獨占獲取,當(dāng)控制離開apcu_entry()時,鎖被釋放:實際上,這將生成器的主體變成一個臨界區(qū),不允許兩個進(jìn)程并發(fā)地執(zhí)行相同的代碼路徑。此外,它禁止任何其他APCu函數(shù)的并發(fā)執(zhí)行,因為它們將獲得相同的鎖。

警告

唯一可以被生成器安全地調(diào)用的APCu函數(shù)是apcu_entry()。

參數(shù)

key

緩存項標(biāo)識

generator

接受?key?作為唯一參數(shù)并將值返回到緩存的可調(diào)用對象。

ttl

生存的時間;將?var?存儲在緩存中?TTL?秒。?ttl?過期后,存儲的變量將從緩存中刪除(在下一次請求時)。如果沒有提供?ttl?(或者?ttl?為?0?),則該值將一直存在,直到手動從緩存中刪除,或者在緩存中不存在(清除,重新啟動等)。

返回值

返回緩存的值。

示例

示例 #1 An apcu_entry() example

<?php
$config = apcu_entry("config", function($key) {
return [
"fruit" => apcu_entry("config.fruit", function($key){
return [
"apples",
"pears"
];
}),
"people" => apcu_entry("config.people", function($key){
return [
"bob",
"joe",
"niki"
];
})
];
});

var_dump($config);
?>

以上示例會輸出:

array(2) {
  ["fruit"]=>
  array(2) {
    [0]=>
    string(6) "apples"
    [1]=>
    string(5) "pears"
  }
  ["people"]=>
  array(3) {
    [0]=>
    string(3) "bob"
    [1]=>
    string(3) "joe"
    [2]=>
    string(4) "niki"
  }
}

參見

  • apcu_store() - 緩存一個變量到存儲中
  • apcu_fetch() - Fetch a stored variable from the cache
  • apcu_delete() - Removes a stored variable from the cache


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號