The fact that one sets an expiration time does not mean that the keys will expire at that particular time. I'm not sure what is happening in the background, if there is a process like a garbage collector that expire keys, but some function do not activate the expiration check and return the key as valid, for example `getAllKeys` is not atomic and returns even expired keys.
$memcached = new Memcached();
$memcached->set('key','value',10);
//waiting more than 10 sec
sleep(20);
$data = $memcached->getAllKeys();
var_dump($data); // key will still be listed
$key = $memcached->get('key'); // will trigger the expirationMemcache Функции
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Memcache Функции
Референца за `memcached.expiration.php` со подобрена типографија и навигација.
Memcache Функции
Некои команди за складирање вклучуваат испраќање вредност за истекување (релативно до ставка или до операција побарана од клиентот) до серверот. Во сите такви случаи, вистинската испратена вредност може да биде Unix време (број на секунди од 1 јануари 1970 година, како цел број), или број на секунди почнувајќи од сегашното време. Во вториот случај, овој број на секунди не смее да надмине 60*60*24*30 (број на секунди во 30 дена); ако вредноста за истекување е поголема од тоа, серверот ќе ја смета за вистинска вредност на Unix време наместо за поместување од сегашното време.
Ако вредноста за истекување е 0 (стандардно), ставката никогаш не истекува (иако може да биде избришана од серверот за да направи место за други ставки).
Белешки од корисници 2 забелешки
A TTL of n seconds will expire between n and n-1 seconds as memcache doesn't use a high-resolution clock internally.
This is important to consider if you're working with very short TTLs.
See https://github.com/memcached/memcached/issues/307