When the key doesn't exist it may return either bool(false) or int(0) (I get different return values on different servers), so be careful if you check for something like ($memcache->increment($key) === false).
Memcache::increment
(PECL memcache >= 0.2.0)
Memcache::increment — Incrementa numéricamente un valor
Descripción
int Memcache::increment
( string
$key
[, int $value = 1
] )
Memcache::increment() incrementa el valor
según el value. Si el valor con la
key no es numérico y no se puede convertir a
número, cambiará su valor a value.
Memcache::increment() no creará
el valor si no existe.
También se puede usar la función memcache_increment().Nota:
No use Memcache::increment() en un valor, que fué guardado con compresión, porque en este caso Memcache::get() no funcionará.
Parámetros
-
key -
Clave del valor a incrementar.
-
value -
Incrementar el valor por
value.
Valores devueltos
Devuelve el nuevo valor en caso de éxito o FALSE en caso de error.
Ejemplos
Ejemplo #1 Ejemplo de Memcache::increment()
<?php
/* procedural API */
$memcache_obj = memcache_connect('memcache_host', 11211);
/* increment counter by 2 */
$current_value = memcache_increment($memcache_obj, 'counter', 2);
/* OO API */
$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);
/* increment counter by 3 */
$current_value = $memcache_obj->increment('counter', 3);
?>
Ver también
- Memcache::decrement() - Decrementa numéricamente un valor
- Memcache::replace() - Reemplaza el valor de un valor existente
perroazul64 at gmail dot com ¶
2 years ago
ian at blip dot fm ¶
3 years ago
Be careful to use Memcache::decrement() and never Memcache::increment() with a negative value.
The check that prevents Memcache::decrement() from going negative is not in place with Memcache::increment(), so you can end up with a garbage integer on the order of 18 quintillion stored in place of the expected value.
jay dot paroline at escapemg dot com ¶
4 years ago
Instead of checking the value before incrementing, you can simply ADD it instead before incrementing each time. If it's already there, your ADD is ignored, and if it's not there, it's set.
If you add($memcacheKey, 0) and then increment($memcacheKey, 1) in that order, you avoid all possible race conditions. If two threads are running this code concurrently, you will always end up with your value being 2 no matter which order the threads execute in.
Anonymous ¶
4 years ago
Please note:
If the key does not exist, memcache does NOT return false (as you might expect) but 0.
You won't get any hint that the key did not exist and still does not exist and that nothing was incremented.
