花了很长时间才解决这个问题。如果你仔细阅读补丁说明
- 使 increment/decrement 在数值不可用时初始化数值(使用二进制协议时)。
如果你没有设置 opt binary protocol,用于初始值的参数只会返回错误 38 - 无效参数。这没有被记录在案。
(PECL memcached >= 0.1.0)
Memcached::increment — 增加数字项目的数值
$key
,$offset
= 1,$initial_value
= 0,$expiry
= 0
Memcached::increment() 将数字项目的数值增加指定的 offset
。如果项目的数值不是数字,则会产生错误。Memcached::increment() 会将项目设置为 initial_value
参数,如果键不存在。
key
要增加的项目的键。
offset
要增加项目的数值的量。
initial_value
如果项目当前不存在,要设置的数值。
expiry
要设置在项目上的过期时间。
成功时返回新项目的数值,失败时返回 false
。
范例 #1 Memcached::increment() 范例
<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
$m->set('counter', 0);
$m->increment('counter');
$n = $m->increment('counter', 10);
var_dump($n);
$m->set('counter', 'abc');
$n = $m->increment('counter');
// ^ 由于项目值不是数字,所以会失败
var_dump($n);
?>
以上范例将输出
int(11) bool(false)