PHP

apcu_entry

apcu_entry

(PECL apcu >= 5.1.0)

apcu_entry - 以原子方式获取或生成缓存条目

描述

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

key试图在缓存中寻找原子,如果找不到,则作为唯一参数generator传递key。然后调用的返回值与可选的指定值一起缓存ttl,并返回。

注意:当控制进入apcu_entry()时,缓存的锁被独占获取,当控制离开apcu_entry()时它被释放:实际上,这会将主体generator转换为临界区,不允许两个进程同时执行相同的代码路径。此外,它禁止同时执行任何其他 APCu 功能,因为它们将获得相同的锁定。

警告

唯一可以安全调用的 APCu 函数generatorapcu_entry()

参数

key

缓存条目的标识

generator

一个可调用的接受key作为唯一参数并将值返回缓存。

ttl

生存时间; var在缓存中存储ttl几秒钟。在ttl通过之后,存储的变量将从缓存中删除(在下一个请求中)。如果ttl提供了 no (或者如果该ttl值为0),则该值将一直保持到手动将其从缓存中移除,否则将无法存在于缓存中(清除,重新启动等)。

返回值

返回缓存的值

例子

Example #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" } }