报表的缓存基本存储和读写,报表缓存读写_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了报表的缓存基本存储和读写,报表缓存读写_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3162字,纯文字阅读大概需要5分钟。
内容图文
报表的缓存基本存储和读写,报表缓存读写
<?php /** * Class Rpt redis 用于报表的缓存基本存储和读写 2.0 * @simple * Rpt::read("diamond.account",$nick); * Rpt::readSync("diamond.account",$nick); * $finder = Rpt::createFinder("diamond.account",$nick); * $finder->read(); * $finder->readSync(); * * Rpt::save("diamond.account",$nick,$data); * $storage = Rpt::createStorage("diamond.account",$nick); * $storage->save($data); * $storage->save($data,7200); */ class Rpt { public static function read($key,$nick){ $finder = self::createFinder($key,$nick); return $finder->read(); } public static function readSync($key,$nick){ $finder = self::createFinder($key,$nick); return $finder->readSync(); } public static function createFinder($key,$nick){ $key = RptGenerate::key($key,$nick); return new RptFinder($key); } public static function createStorage($key,$nick){ $key = RptGenerate::key($key,$nick); return new RptStorage($key); } public static function save($key,$nick,$data,$expired=7200){ $storage = self::createStorage($key,$nick); return $storage->save($data,$expired); } public static function createRedis(){ $redis = new Redis(); $redis->connect(Yii::app()->params["RedisServerIP"]); return $redis; } } /** * Class RptFinder 数据读取 */ class RptFinder { /** * @var string $key */ public $key; /** * @param string $key */ public function __construct($key){ $this->key = $key; } /** * 非安全读取数据 * @return mixed */ public function read(){ $data = $this->readData(); if($data->isRead && !$data->isExpired()) return $data->data; return null; } protected function readData(){ $redis = Rpt::createRedis(); $rptData = new RptData(); $data = json_decode($redis->get($this->key)); if(false == $data){ $rptData->isRead = false; $rptData->expiredTime = time(); $rptData->expired = 24*3600; }else{ $rptData->expired = $data->expired; $rptData->isRead = $data->isRead; $rptData->expiredTime = $data->expiredTime; $rptData->data = $data->data; } return $rptData; } /** * 同步读取数据 * @return mixed */ public function readSync(){ while(true){ $rptData = $this->readData(); if($rptData->isRead && !$rptData->isExpired()) return $this->read(); sleep(1); } } } /** * Class RptStorage 数据存储 */ class RptStorage { /** * @var string key */ public $key; /** * @param string $key */ public function __construct($key){ $this->key = $key; } /** * 写入数据 * @param $data * @param int $expired * @return bool */ public function save($data,$expired=7200){ $rptData = new RptData(); $rptData->data = $data; $rptData->expiredTime = time(); $rptData->isRead = true; $rptData->expired = $expired; $redis = Rpt::createRedis(); return $redis->setex($this->key, $rptData->expired,json_encode($rptData)); } } /** * Class RptData redis存储数据实体 */ class RptData { public $expired; public $expiredTime; public $data; public $isRead; public function isExpired(){ if(time()-$this->expiredTime > $this->expired) return true; return false; } } /** * Class RptGenerate key生成 */ class RptGenerate { public static function key($key,$nick){ return $key.".".md5($nick); } }
http://www.bkjia.com/PHPjc/997641.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/997641.htmlTechArticle报表的缓存基本存储和读写,报表缓存读写 ? php /* * * Class Rpt redis 用于报表的缓存基本存储和读写 2.0 * @simple * Rpt::read("diamond.account",$nick)...
内容总结
以上是互联网集市为您收集整理的报表的缓存基本存储和读写,报表缓存读写_PHP教程全部内容,希望文章能够帮你解决报表的缓存基本存储和读写,报表缓存读写_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。