尽管有apc_add()TTL参数,但数据不会被清除

时间:2014-06-11 02:41:06

标签: php apc command-line-interface

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

$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");
    }

}

1 个答案:

答案 0 :(得分:0)

我稍微阅读了the docs,我找到了答案。在TTL参数部分下:

  

生存时间;将var存储在缓存中ttl秒。在ttl通过之后,存储的变量将从缓存中清除(在下一个请求中)。如果没有提供ttl(或者如果ttl为0),则该值将持续存在,直到它从缓存中手动删除,否则将无法存在于缓存中(清除,重新启动等)。

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