到期时间

一些存储命令在发送时会包含一个失效值(与一个元素或一个客户端操作请求相关)到服务端。所有这类用法,实际发送的值可以 是一个Unix时间戳(自1970年1月1日起至失效时间的整型秒数),或者是一个从现在算起的以秒为单位的数字。对于后一种情况,这个 秒数不能超过60×60×24×30(30天时间的秒数);如果失效的值大于这个值, 服务端会将其作为一个真实的Unix时间戳来处理而不是 自当前时间的偏移。

如果失效值被设置为0(默认),此元素永不过期(但是它可能由于服务端为了给其他新的元素分配空间而被删除)。

 Memcached::setMulti 存储多个元素。

说明

public bool Memcached::setMulti ( array $items [, int $expiration ] )

Memcached::setMulti()类似于Memcached::set(), 但是使用了 参数 items指定多个元素来替代单独的key/value设置以便于对多个元素的操作。 expiration 参数指定的时候一次应用到所有的元素上。

参数

items

存放在服务器上的键/值对数组。

expiration

到期时间,默认为 0。 更多信息请参见到期时间

范例

Example #1 Memcached::setMulti() 示例


从官网的范例看,我们可知一个到期时间。但网上有的例子是相对时间。我就不明白了。于是,查看php的memcache扩展源码

如下图,没有查到expiration相关的处理。

QQ20151120-0

于是下载了memcahe源码

打开文件搜索:REALTIME_MAXDELTA

QQ20151120-1

memcache.c的line:156行,可知,超时的时间小于30*24*60*60,处理的方式为相对时间。当大于时,处理的方式就是到期时间。折腾了大概一小时,终于明白了。