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; }
static function init() { if (NULL === self::$storeObj) { $storeName = self::STORE; self::$storeObj = new $storeName(); } return self::$storeObj; }
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; }
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; }
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; }
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; }
function clearTag($tagKey) { //return self::$memstore->set($tagKey, time()); //return self::$memstore->del($tagKey); return Memstore::init()->del($tagKey); }