我目前使用APC“apc_store”函数作为替换已经存在的缓存中的项目的方法,但我不确定TTL是否被重置。我想拥有它,所以它不会重置TTL值。
答案 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);
}