尽管apc_add() TTL参数不清除数据


Data is not cleared inspite of apc_add() TTL parameter

为什么执行时间大于TTL时不清除key_1

$ttl = 3;
$key = 'key_1';
if (apc_exists($key)) {
    echo "Data exists!'n";
    if (apc_delete($key))
        echo "Data deleted.'n";
    else
        die("Unable to delete data'n");
} else {
    echo "Data not present.'n";
}
apc_add($key, 'some-value', $ttl);
$start = microtime(true);
echo "TTL: ".$ttl."sec'n";
while (1) {
    sleep(1);
    $exec_time = round(microtime(true) - $start, 1);
    $data = apc_fetch($key);
    if (!empty($data)) {
        echo 'key_1: ['.$data.']: '
            .$exec_time."sec"
            .(($exec_time > $ttl) ? "'t<<< Data still exists!'n" : "'n");
    } else {
        die("Data was cleared!'n");
    }
}

我又读了一些文档,我找到了答案。在TTL参数部分下面:

生命的时刻;将var存储在缓存中TTL秒。ttl过期后,存储的变量将从缓存中删除(在下一次请求时)。如果没有提供ttl(或者ttl为0),该值将一直存在,直到手动从缓存中删除,或者在缓存中不存在(清除,重新启动等)。

关键部分是第一组括号;(下一个请求)