APC用户缓存项未过期


APC user cache entries not expiring

当我运行此代码时,每次都会看到5个输出:

<?php
$v = 5;
apc_store('vwxyz',$v,3);
$before = apc_fetch('vwxyz');
sleep(5);
$after = apc_fetch('vwxyz'); //should be false
echo $before;
echo "<br>";
echo $after;
$later = apc_fetch('vwxyz'); //OK this should definitely be false
echo "<br>";
echo $later;

难道不应该从缓存中清除缓存项并向apc_fetch()返回false吗?对于APC,user_ttl设置为2。我仍在努力弄清楚user_ttl是做什么的(文档相当神秘)。

来自手册:

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

因此,它表示在下一个请求的TTL之后,该项目将从缓存中删除。因此,直到你的下一个请求,该项目才会从缓存中删除,这就是为什么你一直得到5。