Работают ли тайм-ауты APC в пределах одного запроса? - PullRequest
0 голосов
/ 18 августа 2011

Вот тело кода моей тестовой функции PHPUnit:

$key = 'test:foobar';
$valueIn = 'this is a test string';
$success = apc_store( $key, $valueIn, 1 ); // 1 second expire time
$this->assertTrue( $success );
$valueOut = apc_fetch( $key );
$this->assertEquals( $valueIn, $valueOut );
sleep(2); // wait 2 seconds
$valueOut = apc_fetch( $key );
$this->assertEquals( false, $valueOut ); // <<< This assert fails!

Мой вопрос: почему $ valueOut == $ valueIn при последней выборке? Разве ключ не должен истечь и вернуть false? Я также пытался ждать 10 секунд, и это не работает.

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

1 Ответ

2 голосов
/ 18 августа 2011

Нет, переменные не устарели в одном запросе.

В документации PHP для apc_store есть следующее, что можно сказать об аргументе ttl (время жизни) (выделено):

После того, как ttl пройдет, сохраненная переменная будет удалена из кэша ( при следующем запросе ).

...