apcu_entry

(PECL apcu >= 5.1.0)

apcu_entry — 캐시 항목을 원자적으로 가져오거나 생성합니다.


설명

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

원자적으로 캐시에서 key를 찾으려고 시도합니다. 찾을 수 없으면 generator가 호출되고 key를 유일한 인수로 전달합니다. 그런 다음 호출의 반환 값은 선택적으로 지정된 ttl과 함께 캐시되고 반환됩니다.

참고: 제어가 apcu_entry()에 들어가면 캐시에 대한 잠금이 독점적으로 획득되고 제어가 apcu_entry()를 떠날 때 해제됩니다. 사실상 이것은 generator의 본체를 임계 섹션으로 바꾸어 두 프로세스가 동일한 코드 경로를 동시에 실행하는 것을 허용하지 않습니다. 또한 다른 APCu 함수는 동일한 잠금을 획득하므로 동시 실행을 금지합니다.

경고: generator가 안전하게 호출할 수 있는 유일한 APCu 함수는 apcu_entry()입니다.


매개변수

key
캐시 항목의 ID
generator
key를 유일한 인수로 받아들이고 캐시에 값을 반환하는 콜러블입니다.
ttl
TTL(Time To Live) ttl 초 동안 캐시에 var를 저장합니다. ttl이 지나면 저장된 변수가 캐시에서 삭제됩니다(다음 요청 시). ttl이 제공되지 않은 경우(또는 ttl0인 경우) 값은 캐시에서 수동으로 제거될 때까지 지속되거나 그렇지 않으면 캐시에 존재하지 않을 때까지 유지됩니다(지우기, 다시 시작 등).

반환 값

캐시된 값을 반환합니다.


Examples

예제 #1 apcu_entry() 예제

                  
<?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"
  }
}
                

기타