代码之家  ›  专栏  ›  技术社区  ›  Alix Axel

APC没有按预期工作?

  •  1
  • Alix Axel  · 技术社区  · 16 年前

    我有以下功能:

    function Cache($key, $value = null, $ttl = 60)
    {
        if (isset($value) === true)
        {
            apc_store($key, $value, intval($ttl));
        }
    
        return apc_fetch($key);
    }
    

    我用以下代码测试它:

    Cache('ktime', time(), 3); // Store
    
    sleep(1);
    var_dump(Cache('ktime') . '-' . time()); echo '<hr />'; // Should Fetch
    sleep(5);
    var_dump(Cache('ktime') . '-' . time()); echo '<hr />'; // Should NOT Fetch
    sleep(1);
    var_dump(Cache('ktime') . '-' . time()); echo '<hr />'; // Should NOT Fetch
    sleep(1);
    var_dump(Cache('ktime') . '-' . time()); echo '<hr />'; // Should NOT Fetch
    

    这就是输出:

    string(21) "1273966771-1273966772"
    string(21) "1273966771-1273966777"
    string(21) "1273966771-1273966778"
    string(21) "1273966771-1273966779"
    

    难道不是这样吗:

    string(21) "1273966771-1273966772"
    string(11) "-1273966777"
    string(11) "-1273966778"
    string(11) "-1273966779"
    

    我不明白,有人能帮我弄清楚这种奇怪的行为吗?

    1 回复  |  直到 16 年前
        1
  •  2
  •   Bill Karwin    16 年前

    显然,这是APC 3.0.16(2007-12-26)及更高版本中的已知问题,不会被修复。

    http://pecl.php.net/bugs/bug.php?id=13331

    TTL可以工作,但“T”是给定请求期间的常量。所以缓存对象至少在下一个请求之前不会过期。

    推荐文章