2016-10-20 9 views
2

TTLを指定することで、項目をキャッシュからエージングする必要があります。しかし、それは動作していません。これは非常に簡単です。 TTLは1秒に設定されます。私は間違いを犯しましたか?APCu TTL not working php 7.0

マイバージョン;

PHP 7.0.12-1+deb.sury.org~xenial+1 (cli) (NTS) 
Copyright (c) 1997-2016 The PHP Group 
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies 
    with Zend OPcache v7.0.12-1+deb.sury.org~xenial+1, Copyright (c) 1999-2016, by Zend Technologies 

マイスクリプト;

cat apcu.php 
<?php 

$key="KEY"; 

function xxx($key) { 
    if (apcu_exists($key)) { 
    print ("In Store\n"); 
    $value = apcu_fetch($key); 
    var_dump($value); 
    } else { 
    $value = "Hello Big Daddy"; 
    apcu_add($key, $value, 1); 
    print ("Not in store, adding\n"); 
    } 
} 

xxx($key); 
sleep(2); 
xxx($key); 
sleep(3); 
xxx($key); 

出力;

php apcu.php 
Not in store, adding 
In Store 
string(15) "Hello Big Daddy" 
In Store 
string(15) "Hello Big Daddy" 

2番目の呼び出しでアイテムがキャッシュにあるとは限りません。

しかし、誰かがそうしなければならないと言っても、3回目の呼び出しでは必ずキャッシュには入ってはいけません。

答えて

1

デフォルトであるapc.use_request_timeがtrueに設定されている場合、SAPI要求の開始時刻は各関数が呼び出される時刻ではなく、TTL計算に使用されます。