2

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

4

1 回答 1

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);
}
于 2010-06-30T04:49:28.690 回答