PHP 7.2.0 Release Candidate 4 Released

有効期限

格納用コマンドの中には、(アイテム単位あるいはクライアントから要求された操作単位の) 有効期限をサーバーに送信するものがあります。そのような場合に実際に送られる値は、 Unix タイム (1970 年 1 月 1 日からの経過秒数) あるいは現在時刻からの秒数となります。 後者の場合、最大の秒数は 60*60*24*30 (30 日間をあらわす秒数) までとなります。 もし有効期限がそれより長い場合は、現在時刻からの経過秒数ではなく Unix タイムであるとサーバーにみなされてしまいます。

有効期限を 0 (デフォルト) にすると、 アイテムは期限切れにならなくなります (しかし、他のアイテム用の場所を確保するためにサーバーから削除されることもありえます)。

add a note add a note

User Contributed Notes 2 notes

up
2
valugi at gmail dot com
10 months 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();
$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 expiration
up
-43
info at tueena dot com
5 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.

<?php
$Memcached
->add('foo', 42, 2);
?>

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