2016-11-18 70 views
1

我遇到了Memcached的问题。我在Debian 8上并使用PHP7。 phpinfo()返回此版本memcached3.0.0b1。我可以存储和获取价值,一切都很好。问题是我想存储一个有效期限的值,但这不起作用。 我试过到目前为止:PHP Memcached过期时间

$memcached = new Memcached(); 
$memcached->set('key','value',10); 
$memcached->set('key','value',time()+10); 
//waiting more than 10 sec 
$data = $memcached->getAllKeys(); 
var_dump($data); 
// all keys are here :'(

有什么建议?

编辑一个新的测试:仍然没有工作(键的位置)

$memcached = new Memcached(); 
$memcached->addServer('127.0.0.1',11211); 
$memcached->set('key','value',10); 
$memcached->set('key','value',time()+10); 
sleep(20); //waiting more than 20 sec 

$data = $memcached->getAllKeys(); 
var_dump($data); 
// all keys are here :'(
exit; 
+0

非常感谢乌拉圭回合的答案,但文档说:公共BOOL的Memcached ::设置(字符串$键,混合$值[摘要$过期]),如果第4,什么是第三? – Guillaume

+0

经过查阅文档,我认为你正在谈论** memcach **,但即时通讯使用** memcached **:'( – Guillaume

+0

不起作用,这意味着不会过期或你得到一个错误? –

回答

0

感谢你的一切,该解决方案是(从@Barmar):

而不是getAllKeys() ,试试get()你设定的关键。它可能不会过期的元素,直到你真的试图检索它。

+1

有一个有趣的注意,说,'getAllKeys'不是一个原子操作,并不能保证所有的键,它的回报仍然有效。 http://no2.php.net/manual/en/memcached.getallkeys.php –