1

私は次の機能を持っています:

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"

わかりません。この奇妙な動作を理解するのを手伝ってくれる人はいますか?

4

1 に答える 1

2

どうやらこれは APC 3.0.16 (2007-12-26) 以降の既知の問題であり、修正される予定はありません。

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

ttl は機能しますが、「t」は特定のリクエスト中は定数です。したがって、キャッシュされたオブジェクトは、少なくとも次のリクエストまで期限切れになりません。

于 2010-05-16T00:47:20.777 に答える