2016-10-20 2 views
2

Указав TTL, элемент должен быть выровнен из кеша. Но это не работает. Это очень просто. TTL устанавливается в 1 секунду. Я сделал ошибку?APCu TTL не работает php 7.0

Моя версия;

PHP 7.0.12-1+deb.sury.org~xenial+1 (cli) (NTS) 
Copyright (c) 1997-2016 The PHP Group 
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies 
    with Zend OPcache v7.0.12-1+deb.sury.org~xenial+1, Copyright (c) 1999-2016, by Zend Technologies 

Мой сценарий;

cat apcu.php 
<?php 

$key="KEY"; 

function xxx($key) { 
    if (apcu_exists($key)) { 
    print ("In Store\n"); 
    $value = apcu_fetch($key); 
    var_dump($value); 
    } else { 
    $value = "Hello Big Daddy"; 
    apcu_add($key, $value, 1); 
    print ("Not in store, adding\n"); 
    } 
} 

xxx($key); 
sleep(2); 
xxx($key); 
sleep(3); 
xxx($key); 

Выход;

php apcu.php 
Not in store, adding 
In Store 
string(15) "Hello Big Daddy" 
In Store 
string(15) "Hello Big Daddy" 

Я не думаю, что элемент должен находиться в кеше второго вызова.

Но даже если кто-то сказал, что это нужно, то это, безусловно, не должно быть в кеше при третьем вызове.

ответ

1

Когда apc.use_request_time установлен в значение true, которое является значением по умолчанию, это то, что происходит - время начала запроса SAPI используется для вычислений TTL, а не для вызова каждой функции.

Смежные вопросы