在以下示例中
if (apc_exists('foo'))
{
echo apc_fetch('foo');
}
apc_exists('foo')
是否有可能返回TRUE
但apc_fetch('foo')
会返回FALSE
,因为这两次调用之间的数据被删除(手动或由于缓存重置)?
答案 0 :(得分:1)
根据我在documentation中所阅读的内容,我们根据请求设计了一致性:
ttl通过后,存储的变量将从缓存中清除(上的 下一个请求)
OTH如果在另一个线程上有类似apc_delete()
的内容,则可以进行非可重复读取。我建议仅将代码重构为一个原子apc_fetch()
:
$foo = apc_fetch("foo", $exist);
if ($exist) {
echo $foo;
}