Mid-Atlantic Developer Conference - Call for Speakers

Délai d'expiration

Certaines commandes de stockage imposent l'envoie d'un délai d'expiration (relatif à un élément ou à une commande émise par le client), sur le serveur. Dans ce cas, cette valeur doit être envoyée sous la forme d'un timestamp Unix (nombre de secondes depuis le 1er janvier 1970, sous forme d'entier), ou d'un nombre de secondes depuis l'heure courante. Dans le dernier cas, ce nombre de secondes ne peut pas excéder 30 jours, soit 60*60*24*30 secondes; si la valeur d'expiration est plus grande que cette valeur, le serveur le considérera comme un timestamp, plutôt qu'un délai.

Si la valeur d'expiration est 0 (la valeur par défaut), l'élément n'expire jamais, même s'il peut être effacé par le serveur pour faire de la place aux autres éléments.

add a note add a note

User Contributed Notes 3 notes

valugi at gmail dot com
1 year ago
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();
//waiting more than 10 sec
$data = $memcached->getAllKeys();
var_dump($data); // key will still be listed
$key = $memcached->get('key'); // will trigger the expiration
i dot caught dot air at gmail dot com
3 months ago
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
info at tueena dot com
6 years ago
Note that if you pass the expiration time as an offset of seconds then the cache item will expire in current-second + offset, not in now + offset.

->add('foo', 42, 2);

This item will expire in n seconds where n > 1 and <= 2, not in exactly 2 seconds.
To Top