Esempio n. 1
0
 /**
  * Increment value of key
  * @param string $key
  * @param mixed $by_value
  *                              if stored value is array:
  *                              if $by_value is value in array, new element will be pushed to the end of array,
  *                              if $by_value is key=>value array, key=>value pair will be added (or updated)
  * @param int $limit_keys_count - maximum count of elements (used only if stored value is array)
  * @param int $ttl
  * @return int|string|array new value of key
  */
 public function increment($key, $by_value = 1, $limit_keys_count = 0, $ttl = 259200)
 {
     if (!$this->acquire_key($key, $auto_unlocker)) {
         return false;
     }
     $value = $this->Couchbase->get($this->prefix . $key);
     if (empty($value)) {
         if ($this->save($key, $by_value, $ttl)) {
             return $by_value;
         } else {
             return false;
         }
     }
     $expiration = $this->ttl_to_expiration($ttl);
     if (is_array($value)) {
         $value = $this->incrementArray($limit_keys_count, $value, $by_value);
     } elseif (is_numeric($value) && is_numeric($by_value)) {
         if ($by_value > 0) {
             $this->setKeyTTL($key, $expiration);
             return $this->Couchbase->increment($this->prefix . $key, $by_value, true, $expiration);
         } else {
             $this->setKeyTTL($key, $expiration);
             return $this->Couchbase->decrement($this->prefix . $key, $by_value * -1, true, $expiration);
         }
     } else {
         $this->setKeyTTL($key, $expiration);
         $this->Couchbase->append($this->prefix . $key, $by_value, $expiration);
         return $this->Couchbase->get($this->prefix . $key);
     }
     if ($this->save($key, $value, $ttl)) {
         return $value;
     } else {
         return false;
     }
 }
<?php

echo "--------------------------------------------------------------------------\n";
echo "\t Couchbase Atomic Counters\n";
echo "--------------------------------------------------------------------------\n";
$cb = new Couchbase();
echo "Set Counter to 0\n";
$cb->set("counter", 0);
echo "Get counter: ";
echo $cb->get("counter");
echo "\n";
$cb->increment("counter");
echo "Get counter: ";
echo $cb->get("counter");
echo "\n";
echo "Increment by 10\n";
$cb->increment("counter", 10);
echo "Get counter: ";
echo $cb->get("counter");
echo "\n";
echo "\nDelete the counter\n";
$cb->delete("counter");
echo "\nInit the value to 10\n";
// create an set an initial
$cb->increment("counter", 1, true, 0, 10);
echo "Get counter: ";
echo $cb->get("counter");
echo "\n";
// does not decrease below 0
$cb->set("counter", 0);
$cb->decrement("counter");