替换已存在的缓存密钥时,函数“apc_store”是否会重置TTL值?

时间:2010-06-30 03:46:30

标签: php apc

我目前使用APC“apc_store”函数作为替换已经存在的缓存中的项目的方法,但我不确定TTL是否被重置。我想拥有它,所以它不会重置TTL值。

1 个答案:

答案 0 :(得分:1)

您在apc_store中提供的TTL肯定会覆盖现有项目的TTL。如果您不提供TTL,该项目将永不过期。

TTL是相对的,从现在开始的秒数。如果你想要一个固定值,只需在每个apc_store调用上使用相同的值。

如果您希望项目在绝对时间到期,则需要将时间与对象一起存储并每次计算TTL。例如,

$obj = apc_fetch($key);

if (!$obj) {
    $obj = new MyObject();
    $obj->expiry = time() + 24*60*60; // Expires 24 hours later
}

$ttl = $obj->expiry - time();

if ($ttl <= 0) {
   // Item expired
} else {
   apc_store($key, $obj, $ttl);
}