get() public method

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.
return 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);
     }
 }
コード例 #2
0
 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
ファイル: Mutex.php プロジェクト: intersvyaz/yii2-cache-mutex
 /**
  * @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
ファイル: RongCloud.php プロジェクト: hughcube/apppush
 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
ファイル: Command.php プロジェクト: rmrevin/yii2-rbac-command
 /**
  * @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
ファイル: DbManager.php プロジェクト: hscstudio/yii2-heart
 private function getFromCache($part)
 {
     if ($this->enableCaching) {
         return $this->cache->get($this->buildKey($part));
     }
     return false;
 }
コード例 #8
0
ファイル: UserConfig.php プロジェクト: cdcchen/yii-plus
 /**
  * @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
ファイル: Menu.php プロジェクト: oakcms/oakcms
 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
 }
コード例 #10
0
 /**
  * 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
ファイル: MenuMap.php プロジェクト: ezsky/yii2-platform-core
 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();
     }
 }
コード例 #13
0
 /**
  * 通过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
ファイル: Config.php プロジェクト: rocketyang/hasscms-app
 /**
  * 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
ファイル: RouteModel.php プロジェクト: yii2mod/yii2-rbac
 /**
  * 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;
 }
コード例 #19
0
 /**
  * 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
ファイル: BaseClient.php プロジェクト: cdcchen/yii2-wechat
 /**
  * @param string $key
  * @return mixed
  */
 protected function getCacheData($key)
 {
     $value = isset($this->data[$key]) ? $this->data[$key] : null;
     return $value ?: $this->cache->get($key);
 }