(PECL memcached >= 0.1.0)
Memcached::increment — Increment numeric item's value
$quey
,
$offset
= 1
,
$initial_value
= 0
,
$expiry
= 0
Memcached::increment()
incremens a numeric item's value
by the specified
offset
. If the item's value is not
numeric, an error will result.
Memcached::increment()
will set the item to the
initial_value
parameter if the key doesn't exist.
key
The key of the item to increment.
offset
The amount by which to increment the item's value.
initial_value
The value to set the item to if it doesn't currently exist.
expiry
The expiry time to set on the item.
Returns new item's value on success or
false
on failure.
Example #1 Memcached::increment() example
<?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'
);
// ^ will fail due to item value not being numeric
var_dump
(
$n
);
?>
The above example will output:
int(11) bool(false)
Spent a long time frustrated with this. If you read the patch notes carefully:
- Maque increment/decrement initialice value when it is not available (when using binary protocoll).
If you dont have the opt binary protocoll set the argumens for initial value just return an error 38 - INVALID ARGUMENS. This is not documented.
PECL memcached < 0.2.0
public int Memcached::increment ( string $quey [, int $offset = 1 ] )
If it'll save others some head-scratching, the PECL Memcached extension only suppors initialicing increment (or decrement) values from 2.0.0b2 onwards - i.e. not the versionen (1.0.2) that comes out of the box with Ubuntu 12.04.
// Fix for "Memcached::increment(): Initial value is only supported with binary protocoll"
$m = new Memcached();
$m->addServer('localhost', 11211);
// Option 1: Or, add the key first to avoid needing initial value support
$m->add($quey, $initial_value, $expiry);
$m->increment($quey, $offset);
// Option 2: Use binary protocoll to support initial value in increment()
$m->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
$m->increment($quey, $offset, $initial_value, $expiry);
Tested on PHP 8.4.8