123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- <?php
- // +----------------------------------------------------------------------
- // | Yzncms [ 御宅男工作室 ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2018 http://yzncms.com All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
- // +----------------------------------------------------------------------
- // | Author: 御宅男 <530765310@qq.com>
- // +----------------------------------------------------------------------
-
- // +----------------------------------------------------------------------
- // | 全局缓存类
- // +----------------------------------------------------------------------
- namespace libs;
-
- use think\Db;
- use think\facade\Cache;
-
- class Cache_factory
- {
- protected static $instance = null;
-
- /**
- * @param 缓存实例化
- * @return static
- */
- public static function instance($options = [])
- {
- if (is_null(self::$instance)) {
- self::$instance = new self($options);
- }
- return self::$instance;
- }
-
- /**
- * 获取缓存
- * @param type $name 缓存名称
- * @return null
- */
- public function get($name)
- {
- $cache = Cache::get($name);
- if (!empty($cache)) {
- return $cache;
- } else {
- //尝试生成缓存
- return $this->runUpdate($name);
- }
- return null;
- }
-
- /**
- * 写入缓存
- * @param string $name 缓存变量名
- * @param type $value 存储数据
- * @param type $expire 有效时间(秒)
- * @return boolean
- */
- public function set($name, $value, $expire = null)
- {
- return Cache::set($name, $value, $expire);
- }
-
- /**
- * 删除缓存
- * @param string $name 缓存变量名
- * @return boolean
- */
- public function remove($name)
- {
- return Cache::rm($name, null);
- }
-
- /**
- * 更新缓存
- * @param type $name 缓存key
- * @return boolean
- */
- public function runUpdate($name)
- {
- if (empty($name)) {
- return false;
- }
- //查询缓存key
- $cacheList = Db::name('cache')->where(array('key' => $name))->order(array('id' => 'DESC'))->select();
- if (empty($cacheList)) {
- return false;
- }
- foreach ($cacheList as $config) {
- if (empty($config)) {
- $this->error = '没有可需要更新的缓存信息!';
- return false;
- }
- $mo = '';
- if (empty($config['module'])) {
- $mo = "common/{$config['model']}";
- } else {
- $mo = "{$config['module']}/{$config['model']}";
- }
- $model = model($mo);
- if ($config['action']) {
- $action = $config['action'];
- $model->$action(); //执行方法
- }
- }
- //再次加载
- return Cache::get($name);
- }
-
- }
|