Here’s the body of my PHPUnit test function code:
$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!
My question is, why is $valueOut == $valueIn on the last fetch? Shouldn’t the key expire and return false? I’ve also tried waiting 10 seconds and it doesn’t work.
I’ve used apc.php to examine the cache, and the key is in there with a 1-second expire. When I examine the key, the value is false, which is as expected. I’m using APC 3.1.7
No, variables are not expired within a single request.
The PHP documentation for
apc_storehas the following to say about thettl(time to live) argument (emphasis mine):