This is usable for locking/unlocking
<?php
do {} while (!apcu_add('lock_name', 'foo', 10));
// this part is protected against multiple/multithread run
apcu_delete('lock_name');(PECL apcu >= 4.0.0)
apcu_add — Almacena en caché una nueva variable en el almacén de datos
Almacena en caché una variable en el almacén de datos, solo si no ha sido ya almacenada.
Nota: A diferencia de muchos otros mecanismos en PHP, las variables almacenadas utilizando apcu_add() persistirán entre las peticiones (hasta que sus valores sean retirados del caché).
key
       Almacena la variable utilizando este nombre de clave. Cada clave es única en el caché,
       intentar utilizar apcu_add() para almacenar un dato con una
       clave key ya existente no sobrescribirá el dato sino que devolverá
       el valor false. (Esta es la única diferencia entre
       las funciones apcu_add() y apcu_store().)
      
varLa variable a almacenar.
ttl
       Duración de vida; almacena la variable var en el caché durante
       ttl segundos. Después de la expiración de
       ttl, la variable almacenada será retirada del caché (en la
       próxima petición). Si no se pasa ningún valor a
       ttl (o si el valor de ttl es
       0), la variable persistirá hasta que sea retirada
       manualmente del caché, o, de lo contrario, fallará al salir del caché (durante un
       borrado, reinicio, etc.).
      
values
       Los nombres son proporcionados por las claves del array values,
       las variables por los valores.
      
Devuelve TRUE si una variable ha sido efectivamente añadida al caché, FALSE en caso contrario. La segunda sintaxis devuelve un array con las claves erróneas.
Ejemplo #1 Un ejemplo con apcu_add()
<?php
$bar = 'BAR';
apcu_add('foo', $bar);
var_dump(apcu_fetch('foo'));
echo "\n";
$bar = 'NEVER GETS SET';
apcu_add('foo', $bar);
var_dump(apcu_fetch('foo'));
echo "\n";
?>El ejemplo anterior mostrará:
string(3) "BAR" string(3) "BAR"
This is usable for locking/unlocking
<?php
do {} while (!apcu_add('lock_name', 'foo', 10));
// this part is protected against multiple/multithread run
apcu_delete('lock_name');