get() публичный Метод

Retrieves a value from cache with a specified key.
public get ( mixed $key ) : mixed
$key mixed a key identifying the cached value. This can be a simple string or a complex data structure consisting of factors representing the key.
Результат mixed the value stored in cache, false if the value is not in the cache, expired, or the dependency associated with the cached data has changed.
Пример #1
0
 /**
  * @inheritdoc
  */
 public function load()
 {
     $contents = $this->yiiCache->get($this->key);
     if ($contents !== false) {
         $this->setFromStorage($contents);
     }
 }
 protected function load()
 {
     $this->items = $this->cache->get('settings');
     if (!$this->items) {
         $this->items = [];
         $rows = (new Query())->from($this->tableName)->all($this->db);
         foreach ($rows as $row) {
             $this->items[$row['category']][$row['key']] = @unserialize($row['value']);
         }
         $this->cache->set('settings', $this->items, $this->cacheTime);
     }
 }
Пример #3
0
 /**
  * @throws InvalidConfigException
  */
 public function init()
 {
     if ($this->cache) {
         /** @var Cache $cache */
         $this->cache = Instance::ensure($this->cache, Cache::className());
         $cacheKey = __CLASS__;
         if (($this->_paramsInfo = $this->cache->get($cacheKey)) === false) {
             $this->_paramsInfo = $this->fetchParamsInfo();
             $this->cache->set($cacheKey, $this->_paramsInfo, $this->cacheDuration, $this->cacheDependency);
         }
     } else {
         $this->_paramsInfo = $this->fetchParamsInfo();
     }
 }
Пример #4
0
 /**
  * @inheritdoc
  */
 protected function acquireLock($name, $timeout = 0)
 {
     if (!$this->cache instanceof Cache) {
         return false;
     }
     $waitTime = 0;
     while ($this->cache->get($this->getCacheKey($name)) !== false) {
         $waitTime++;
         if ($waitTime > $timeout) {
             return false;
         }
         sleep(1);
     }
     return $this->cache->set($this->getCacheKey($name), true);
 }
Пример #5
0
 public function getToken($userId, $name, $portraitUri)
 {
     $cacheKey = 'token:' . serialize([strval($userId), strval($name), strval($portraitUri)]);
     if (!$this->cache instanceof Cache || false == ($results = $this->cache->get($cacheKey)) || !isset($results['token'])) {
         $response = $this->request('/user/getToken', ['userId' => $this->getUserAlias($userId), 'name' => $name, 'portraitUri' => $portraitUri]);
         $results = Json::decode($response, true);
         if (!isset($results['code']) || 200 != $results['code']) {
             throw new ResultException($response, '获取token失败');
         }
         if ($this->cache instanceof Cache) {
             $this->cache->set($cacheKey, $results, $this->tokenCacheDuration);
         }
     }
     return $results['token'];
 }
Пример #6
0
 /**
  * @return array
  * @throws \yii\base\InvalidConfigException
  */
 protected function getAllAssignments()
 {
     $result = [];
     $useCache = $this->useCache === true;
     if ($useCache && $this->cache->exists('assignments-0')) {
         echo '    > Assignments cache exists.' . PHP_EOL;
         $answer = $this->prompt('      > Use cache? [yes/no]');
         if (strpos($answer, 'y') === 0) {
             $this->cacheIterator(function ($key) use(&$result) {
                 $result = ArrayHelper::merge($result, $this->cache->get($key));
             });
             return $result;
         }
     }
     /** @var \yii\db\ActiveQuery $UsersQuery */
     $UsersQuery = call_user_func([$this->user->identityClass, 'find']);
     /** @var \yii\web\IdentityInterface[] $Users */
     foreach ($UsersQuery->batch($this->batchSize, $this->db) as $k => $Users) {
         $chunk = [];
         foreach ($Users as $User) {
             $pk = $User->getId();
             $assignments = array_keys($this->authManager->getAssignments($pk));
             $chunk[$pk] = $assignments;
             $result[$pk] = $assignments;
         }
         if ($useCache) {
             $this->cache->set(sprintf('assignments-%d', $k), $chunk);
         }
     }
     return $result;
 }
Пример #7
0
 private function getFromCache($part)
 {
     if ($this->enableCaching) {
         return $this->cache->get($this->buildKey($part));
     }
     return false;
 }
Пример #8
0
 /**
  * @param int|string $userId
  * @param string $key
  * @return bool|mixed
  */
 protected function getFromCache($userId, $key)
 {
     if ($this->cacheIsActive()) {
         return $this->cache->get($this->buildCacheKey($userId, $key));
     } else {
         return false;
     }
 }
Пример #9
0
 public function run()
 {
     if ($this->cache) {
         /** @var Cache $cache */
         $this->cache = Instance::ensure($this->cache, Cache::className());
         $cacheKey = [__CLASS__, $this->items];
         if (($this->items = $this->cache->get($cacheKey)) === false) {
             $this->items = ModuleEvent::trigger(self::EVENT_FETCH_ITEMS, new MenuItemsEvent(['items' => $this->items]), 'items');
             $this->cache->set($cacheKey, $this->items, $this->cacheDuration, $this->cacheDependency);
         }
     } else {
         $this->items = ModuleEvent::trigger(self::EVENT_FETCH_ITEMS, new MenuItemsEvent(['items' => $this->items]), 'items');
     }
     $this->items += $this->customItems;
     parent::run();
     // TODO: Change the autogenerated stub
 }
 /**
  * Performs the actual dependency checking.
  * @param Cache $cache the cache component that is currently evaluating this dependency
  * @return boolean whether the dependency is changed or not.
  * @throws InvalidConfigException if [[group]] is not set.
  */
 public function getHasChanged($cache)
 {
     if ($this->group === null) {
         throw new InvalidConfigException('GroupDependency::group must be set');
     }
     $version = $cache->get([__CLASS__, $this->group]);
     return $version === false || $version !== $this->data;
 }
Пример #11
0
 public function init()
 {
     if ($this->cache) {
         /** @var Cache $cache */
         $this->cache = Instance::ensure($this->cache, Cache::className());
         $cacheKey = __CLASS__;
         if ((list($paths, $routes, $links) = $this->cache->get($cacheKey)) === false) {
             $this->createMap();
             $this->cache->set($cacheKey, [$this->_paths, $this->_routes, $this->_links], $this->cacheDuration, $this->cacheDependency);
         } else {
             $this->_paths = $paths;
             $this->_routes = $routes;
             $this->_links = $links;
         }
     } else {
         $this->createMap();
     }
 }
Пример #12
0
 public function init()
 {
     if (!$this->language) {
         throw new InvalidConfigException(get_called_class() . '::language must be set.');
     }
     if ($this->cache) {
         /** @var Cache $cache */
         $this->cache = Instance::ensure($this->cache, Cache::className());
         $cacheKey = [__CLASS__, $this->language];
         if ((list($paths, $routes, $links) = $this->cache->get($cacheKey)) === false) {
             $this->createMap();
             $this->cache->set($cacheKey, [$this->_paths, $this->_routes, $this->_links], $this->cacheDuration, $this->cacheDependency);
         } else {
             $this->_paths = $paths;
             $this->_routes = $routes;
             $this->_links = $links;
         }
     } else {
         $this->createMap();
     }
 }
 /**
  * 通过API查询IP信息
  * @param null $ip
  * @return IpData|mixed
  */
 public function get($ip = null)
 {
     $ip = $ip === null ? Yii::$app->request->userIP : $ip;
     $ipData = new IpData();
     $cacheKey = $this->getCacheKey($ip);
     if ($this->cache !== null && ($json = $this->cache->get($cacheKey))) {
         $ipData->setAttributes(json_decode($json, true), false);
         return $ipData;
     }
     $context = stream_context_create(['http' => ['timeout' => 1]]);
     $url = $this->_url . $ip;
     try {
         $result = json_decode(file_get_contents($url, 0, $context), true);
     } catch (Exception $e) {
         $result = null;
     }
     if ($result && $result['code'] == 0) {
         $ipData->setAttributes($result['data'], false);
         $this->cache !== null && $this->cache->set($cacheKey, json_encode($ipData), $this->cacheDuration);
     }
     return $ipData;
 }
Пример #14
0
 /**
  * Get data
  * @return array
  */
 public function getData()
 {
     if ($this->_data === null) {
         if ($this->_cache !== null) {
             $cache = $this->_cache->get($this->cacheKey);
             if ($cache === false) {
                 $this->_data = $this->_getDataFromDb();
                 $this->_setCache();
             } else {
                 $this->_data = $cache;
             }
         } else {
             $this->_data = $this->_getDataFromDb();
         }
     }
     return $this->_data;
 }
Пример #15
0
 /**
  * Get list of application routes
  *
  * @param string|null $module
  *
  * @return array
  */
 public function getAppRoutes($module = null)
 {
     if ($module === null) {
         $module = Yii::$app;
     } elseif (is_string($module)) {
         $module = Yii::$app->getModule($module);
     }
     $key = [__METHOD__, $module->getUniqueId()];
     $result = $this->cache !== null ? $this->cache->get($key) : false;
     if ($result === false) {
         $result = [];
         $this->getRouteRecursive($module, $result);
         if ($this->cache !== null) {
             $this->cache->set($key, $result, $this->cacheDuration, new TagDependency(['tags' => self::CACHE_TAG]));
         }
     }
     return $result;
 }
Пример #16
0
 /**
  * Производит поиск модулей удовлетворяющих условиям запроса
  * @return string[] Modules Ids
  */
 public function find()
 {
     if ($this->cache) {
         $cacheKey = $this->getFindCacheKey();
         if (($result = $this->cache->get($cacheKey)) === false) {
             $modules = $this->findModules($this->_nodeOf ? $this->_nodeOf : Yii::$app);
             if ($this->_orderBy) {
                 usort($modules, [$this, 'compareModules']);
             }
             $result = $this->extractModuleIds($modules);
             $this->cache->set($cacheKey, $result, $this->cacheDuration, $this->cacheDependency);
         }
         return $result;
     }
     $modules = $this->findModules($this->_nodeOf ? $this->_nodeOf : Yii::$app);
     if ($this->_orderBy) {
         usort($modules, [$this, 'compareModules']);
     }
     return $this->extractModuleIds($modules);
 }
Пример #17
0
 /**
  * Renders the menu.
  */
 public function run()
 {
     if ($this->route === null && Yii::$app->controller !== null) {
         $this->route = Yii::$app->controller->getRoute();
     }
     if ($this->cache) {
         /** @var Cache $cache */
         $this->cache = Instance::ensure($this->cache, Cache::className());
         $cacheKey = [__CLASS__, $this->items];
         if (($this->items = $this->cache->get($cacheKey)) === false) {
             $this->items = ModuleEvent::trigger(self::EVENT_FETCH_ITEMS, new DesktopEvent(['items' => $this->items]), 'items');
             $this->cache->set($cacheKey, $this->items, $this->cacheDuration, $this->cacheDependency);
         }
     } else {
         $this->items = ModuleEvent::trigger(self::EVENT_FETCH_ITEMS, new DesktopEvent(['items' => $this->items]), 'items');
     }
     $this->normalizeItems();
     $options = $this->options;
     $tag = ArrayHelper::remove($options, 'tag', 'div');
     echo Html::tag($tag, $this->renderItems($this->columns), $options);
 }
Пример #18
0
 /**
  * Get OAuth2 token using client credentials granted method.
  * @param boolean $isForce Whether force regenerated token.
  * @return string
  */
 public function getToken($isForce = false)
 {
     if ($this->_token === null || $isForce) {
         $key = __CLASS__ . '#' . $this->clientId . '#token';
         if ($this->cache instanceof Cache && !$isForce) {
             $token = $this->cache->get($key);
             if ($token) {
                 $this->_token = $token['access_token'];
                 goto RESULT;
             }
         }
         $client = $this->getClient();
         $url = static::buildUrl($this->baseUrl, $this->tokenPath);
         $res = $client->post($url, ['json' => ['client_id' => $this->clientId, 'client_secret' => $this->clientSecret, 'grant_type' => 'client_credentials']]);
         $tmp = $res->json();
         $this->_token = $tmp['access_token'];
         if ($this->cache instanceof Cache) {
             $this->cache->set($key, $tmp, $tmp['expires_in'] - 300);
         }
     }
     RESULT:
     return $this->_token;
 }
 /**
  * Set row value
  * @param $name
  * @return mixed
  */
 public function get($name)
 {
     return $this->_cache->get($this->prefix . $name);
 }
Пример #20
0
 /**
  * @param $key
  *
  * @return mixed
  *
  * @see yii\caching\Cache::get()
  */
 public function get($key)
 {
     return $this->cache->get($key);
 }
Пример #21
0
 /**
  * 获取缓存数据
  * @param $name 缓存Key
  * @return mixed
  */
 protected function getCache($name)
 {
     return $this->cache->get($this->getCacheKey($name));
 }
Пример #22
0
 /**
  * @param string $key
  * @return mixed
  */
 protected function getCacheData($key)
 {
     $value = isset($this->data[$key]) ? $this->data[$key] : null;
     return $value ?: $this->cache->get($key);
 }