/**

* 作者:初十

* QQ:345610000

*/

class myPDO extends PDO

{

public $cache_Dir = null; //缓存目录

public $cache_expireTime = 7200; //缓存时间,默认两小时

//带缓存的查询

public function cquery($sql)

{

//缓存存放总目录

if ($this->cache_Dir == null || !is_dir($this->cache_Dir)) {

exit (“缓存目录有误!”);

} else {

$this->cache_Dir = str_replace(“”, “/”, $this->cache_Dir);

$FileName = trim($this->cache_Dir, “/”) . ‘/’ . urlencode(trim($sql)) . ‘.sql’;

}

//判断生成缓存

if (!file_exists($FileName) || time() – filemtime($FileName) > $this->cache_expireTime) {

if ($tmpRS = parent::query($sql)) {

$data = serialize($tmpRS->fetchAll());

self::createFile($FileName, $data);

} else {

exit (“SQL语法错误

“);

}

}

return $this->readCache($FileName);

}

//读缓存文件

private static function readCache($FilePath)

{

if (is_file($FilePath) && $Data = file_get_contents($FilePath)) {

return new cache_PDOStatement(unserialize($Data));

}

return false;

}

//生成文件

public static function createFile($FilePath, $Data = ”)

{

if (file_put_contents($FilePath, $Data)) {

return true;

} else {

return false;

}

}

}

//缓存用到Statement类

class cache_PDOStatement

{

private $recordArr = array();

private $cursorId = 0;

private $recordCount = 0;

public function __construct($arr)

{

$this->recordArr = $arr;

$this->recordCount = count($arr);

}

//返回一条记录,指针下移一行

public function fetch()

{

if ($this->cursorId == $this->recordCount) {

return false;

} else if ($this->cursorId == 0) {

$this->cursorId++;

return current($this->recordArr);

} else {

$this->cursorId++;

return next($this->recordArr);

}

}

//返回全部结果

public function fetchAll()

{

return $this->recordArr;

}

//单行单列查询

public function fetchColumn()

{

$tmpArr = current($this->recordArr);

return $tmpArr[0];

}

}

使用方法

$db = new myPDO(‘mysql: host = localhost;dbname=news’,’newsadmin’,’123456′);

$db->cache_Dir = “cache”; //设置缓存目录

$db->cache_expireTime = 7200; //设置缓存时间

$rs = $db->cquery(“select * from news limit 0,10”); //用缓存查询方法cquery代替query

while ($row = $rs->fetch()) {

echo $row[“F_title”] . “

“;

}

$rs = null;

$db = null;

www.bkjia.comtrueTechArticle/** * 作者:初十 * QQ:345610000 */ class myPDO extends PDO { public $cache_Dir = null; //缓存目录 public $cache_expireTime = 7200; //缓存时间,默认两小时 //带缓…

php pdo 缓冲,PDO支持数据缓存_PHP教程相关推荐

  1. Spring Boot 实践折腾记(12):支持数据缓存Cache

    不管是什么类型的应用程序,都离不开数据,即便如现在的手机APP,我们依然需要使用数数据库,对于不懂的人,当然,我们可以告诉他们一些高大上的概念,但是作为专业人士,就一定要明白背后的真实原理到底是什么. ...

  2. Php的if自动转换类型,php之数据类型自动转换,php之数据类型转换_PHP教程

    php之数据类型自动转换,php之数据类型转换 1:概述 ---php是一种弱类型的语言,它可以根据运行环境的变化而自动进行数据类型的转换 1.1转换成布尔类型的原则 以下值都将转换成布尔类型中的fa ...

  3. php管理varnish,php实现监控varnish缓存服务器的状态,php监控varnish缓存_PHP教程

    php实现监控varnish缓存服务器的状态,php监控varnish缓存 当varnish和网站部署在同一台服务器上的时候,我们不可能随时登录上服务器去查看varnish的命中率,没想到有大神早就写 ...

  4. php缓存小偷,小偷PHP+Html+缓存_PHP教程

    传奇服务器名".$regs[1].""; //把得到的内容的html补齐,自己发挥 }//END IF $clinch=str_replace(' ','你自己的广告', ...

  5. PHP访问关键字,php数据访问之查询关键字,php数据关键字_PHP教程

    php数据访问之查询关键字,php数据关键字 本文实例为大家分享了php查询操作的实现代码,供大家参考,具体内容如下 一.一个关键字查询 主页面: 汽车查询页面 汽车查询页面请输入查询内容: 代号 汽 ...

  6. php pdo 封装类,php pdo封装类代码(支持事务)

    /** * PDO数据库 * @copyright By GOOGLE */ class pdo_db { /** * PDO实例 * @var PDO */ protected $_db; /** ...

  7. mysql pdo 查询一条数据_pdo mysql怎么输出第1条 第4条 第7条数据

    pdo mysql怎么输出第1条 第4条 第7条数据.. 下面是输出全部数据.. query($sql1); while($row = $rs -> fetch()) { echo' '.$ro ...

  8. mysql pdo 查询一条数据,使用 PDO 关联查询 MySQL 数据

    使用pdo关联查询mysql数据 try { $pdo = new PDO('mysql:host=localhost;dbname=test;', 'root', '123456'); // 0.等 ...

  9. 分布式数据流计算系统的数据缓存技术综述

    点击上方蓝字关注我们 分布式数据流计算系统的数据缓存技术综述 袁旭初, 付国, 毕继泽, 张岩峰, 聂铁铮, 谷峪, 鲍玉斌, 于戈 东北大学计算机科学与工程学院,辽宁 沈阳 110169 论文引用格 ...

最新文章

  1. MySQL 存储过程传参之in, out, inout 参数用法
  2. 求方程ax2+bx+c的根python_Python,计算 ax^2 + bx + c = 0的根
  3. 单点登录系统SSO概述 | 单点登录讲解(1)
  4. 微软2019暑期实习笔试题
  5. centos7安装3.6版本zookeeper和jdk8
  6. 将图片储存在dataset_最新15-16方联体垃圾箱价格图片
  7. c mysql 返回自增id_mysql返回自增id
  8. OC CoreData简单使用
  9. 在 Azure 虚拟机上快速搭建 MongoDB 集群
  10. linux 测试t3协议,Yealink网络电话SIP-T38G本地文件包含漏洞
  11. windows server2003的邮箱服务器安装详细步骤
  12. PE系统加载RAID驱动
  13. MaxScript脚本
  14. C 语言之父,UNIX 系统之父 Dennis Ritchie (丹尼斯 里奇)于 10 月 9 日去世,享年 70 岁
  15. ESP32上手笔记 | 05 - 获取MPU6050数据进行姿态解算和展示(I2Cdev+MPU6050+Processing)
  16. @Insert的用法
  17. 数据库查询练习(一)
  18. 数据结构算法之数组篇
  19. java swt 双屏_YOTA3手机和kindle合二为一,让你玩的同时享受阅读的乐趣
  20. 传感网应用开发(环境部署)

热门文章

  1. 如果你的电脑是通过代理上网的.就要用端口映射
  2. ROS(Robot Operating System)笔记 : 2.创建并配置package
  3. 操作系统04进程同步与通信
  4. linux程序莫名异常怎么查
  5. dataTables插件使用
  6. 【HDOJ】4358 Boring counting
  7. linux function
  8. Office 365身份认证管理-添加并验证联合认证域
  9. 【view桌面虚拟化系列】1-vSphere搭建
  10. 软件工程心理学之9----乙方如何面对甲方2