Ejemplo n.º 1
0
 static function multiGet($keys)
 {
     !self::$memstore && (self::$memstore = Memstore::init());
     $expir_keys = array_map('self::expirKey', $keys);
     # Если объекта в кеше не нашлось, то безусловно перекешируем
     if (false === ($c_arr = self::$memstore->get(array_merge($expir_keys, $keys)))) {
         return false;
     }
     $rez = array();
     foreach ($keys as $k => $key) {
         if (!isset($c_arr[$key])) {
             $rez[$k] = false;
             continue;
         }
         # Если время жизни кеша истекло, то перекешируем с условием блокировки
         if (!isset($c_arr[self::EXPR_PREF . $key]) || $c_arr[self::EXPR_PREF . $key] < time()) {
             # Пытаемся установить блокировку
             # Если блокировку установили мы, то отправляемся перекешировать, иначе возвращаем устаревший объект из кеша
             if (self::lock()->set($key)) {
                 $rez[$k] = false;
                 continue;
             }
         }
         $rez[$k] = $c_arr[$key];
     }
     return $rez;
 }
Ejemplo n.º 2
0
 static function init()
 {
     if (NULL === self::$storeObj) {
         $storeName = self::STORE;
         self::$storeObj = new $storeName();
     }
     return self::$storeObj;
 }
Ejemplo n.º 3
0
 public function del($key)
 {
     !self::$memstore && (self::$memstore = Memstore::init());
     if (isset(self::$locked[$key]) && self::$locked[$key] && self::$memstore->del(self::LOCK_PREF . $key)) {
         unset(self::$locked[$key]);
         return true;
     }
     return false;
 }
Ejemplo n.º 4
0
 static function multiGet($keys)
 {
     !self::$memstore && (self::$memstore = Memstore::init());
     # Если объекта в кеше не нашлось, то безусловно перекешируем
     if (false === ($Cobjs = self::$memstore->get($keys))) {
         return false;
     }
     $rekeys = array_flip($keys);
     $rez = array_fill_keys($rekeys, false);
     foreach ($Cobjs as $rekey => $cobj) {
         $rez[$rekeys[$rekey]] = $cobj;
     }
     return $rez;
 }
Ejemplo n.º 5
0
 static function multiGet($keys)
 {
     !self::$memstore && (self::$memstore = Memstore::init());
     $expir_keys = array_map('self::expirKey', $keys);
     # Если объекта в кеше не нашлось, то безусловно перекешируем
     if (false === ($c_arr = self::$memstore->get(array_merge($expir_keys, $keys)))) {
         return false;
     }
     $rez = array();
     foreach ($keys as $k => $key) {
         $rez[$k] = self::mainGet($key, $c_arr);
     }
     return $rez;
 }
Ejemplo n.º 6
0
 static function multiGet($keys)
 {
     !self::$memstore && (self::$memstore = Memstore::init());
     # если объекта в кеше не нашлось, то безусловно перекешируем
     if (false === ($cobj = self::$memstore->get($keys))) {
         return false;
     }
     $rez = array();
     foreach ($keys as $id => $key) {
         if (!isset($cobj[$key])) {
             $rez[$id] = false;
             continue;
         }
         list($obj, $expire) = $cobj[$key];
         if ($expire < time() && self::lock()->set($key)) {
             $rez[$id] = false;
             continue;
         }
         $rez[$id] = $obj;
     }
     return $rez;
 }
Ejemplo n.º 7
0
 function clearTag($tagKey)
 {
     //return self::$memstore->set($tagKey, time());
     //return self::$memstore->del($tagKey);
     return Memstore::init()->del($tagKey);
 }