php pdo 缓冲,PDO支持数据缓存_PHP教程

/**

* 作者:初十

* 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; //缓存时间,默认两小时 //带缓…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/392295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mooc课程下载_如何使用十大商学院的免费课程制作MOOC“ MBA”

mooc课程下载by Laurie Pickard通过劳里皮卡德(Laurie Pickard) 如何使用十大商学院的免费课程制作MOOC“ MBA” (How to make a MOOC “MBA” using free courses from Top 10 business schools) Back when massive open online courses (MOOCs) were new, I started a proje…

leetcode 1584. 连接所有点的最小费用(并查集)

给你一个points 数组,表示 2D 平面上的一些点,其中 points[i] [xi, yi] 。 连接点 [xi, yi] 和点 [xj, yj] 的费用为它们之间的 曼哈顿距离 :|xi - xj| |yi - yj| ,其中 |val| 表示 val 的绝对值。 请你返回将所有点连接的最小…

Nagios学习实践系列

其实上篇Nagios学习实践系列——基本安装篇只是安装了Nagios基本组件,虽然能够打开主页,但是如果不配置相关配置文件文件,那么左边菜单很多页面都打不开,相当于只是一个空壳子。接下来,我们来学习研究一下Nagios的配置…

在Salesforce中处理Email的发送

在Salesforce中可以用自带的 Messaging 的 sendEmail 方法去处理Email的发送 请看如下一段简单代码: public boolean TextFormat {get;set;} public string EmailTo {get;set;} public string EmailCC {get;set;} public string EmailBCC {get;set;} public string …

kvm vnc的使用,鼠标漂移等

1.宿主机的vnc(virtual Network Computing)配置 安装rpm包 yum install tigervnc-server -y 为了防止干扰直接关闭防火墙和selinux /etc/init.d/iptables stop setenforce 0 配置vnc密码和启动vncserver服务 vncpasswd vncserver 2.客户机的vnc 在qemu…

php深浅拷贝,JavaScript 中的深浅拷贝

工作中经常会遇到需要复制 JavaScript 数据的时候,遇到 bug 时实在令人头疼;面试中也经常会被问到如何实现一个数据的深浅拷贝,但是你对其中的原理清晰吗?一起来看一下吧!一、为什么会有深浅拷贝想要更加透彻的理解为什…

使用Python进行地理编码和反向地理编码

Geocoding is the process of taking input text, such as an address or the name of a place, and returning a latitude/longitude location. To put it simply, Geocoding is converting physical address to latitude and longitude.地理编码是获取输入文本(例如地址或地点…

java开发简历编写_如何通过几个简单的步骤编写出色的初级开发人员简历

java开发简历编写So you’ve seen your dream junior developer role advertised, and are thinking about applying. It’s time to write that Resume! Nothing better than sitting down to a blank piece of paper and not knowing how to start, right?因此,您…

leetcode 628. 三个数的最大乘积(排序)

给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。 示例 1: 输入: [1,2,3] 输出: 6 解题思路 最大的乘积可能有两种情况 1.两个最小负数和一个最大正数 2.三个最大正数 代码 class Solution {public int maximumProduct(int[…

[Object-C语言随笔之三] 类的创建和实例化以及函数的添加和调用!

上一小节的随笔写了常用的打印以及很基础的数据类型的定义方式,今天就来一起学习下如何创建类与函数的一些随笔; 首先类的创建:在Xcode下,菜单File-New File,然后出现选择class模板,如下图&…

2024-AI人工智能学习-安装了pip install pydot但是还是报错

2024-AI人工智能学习-安装了pip install pydot但是还是报错 出现这样子的错误: /usr/local/bin/python3.11 /Users/wangyang/PycharmProjects/studyPython/tf_model.py 2023-12-24 22:59:02.238366: I tensorflow/core/platform/cpu_feature_guard.cc:182] This …

grafana 创建仪表盘_创建仪表盘前要问的三个问题

grafana 创建仪表盘可视化 (VISUALIZATIONS) It’s easier than ever to dive into dashboarding, but are you doing it right?深入仪表板比以往任何时候都容易,但是您这样做正确吗? Tableau, Power BI, and many other business intelligence tools …

qq群 voiceover_如何在iOS上使用VoiceOver为所有人构建应用程序

qq群 voiceoverby Jayven N由Jayven N 如何在iOS上使用VoiceOver为所有人构建应用程序 (How to build apps for everyone using VoiceOver on iOS) 辅助功能入门 (Getting started with accessibility) There’s always those topics that people don’t talk about enough. S…

IntelliJ IDEA代码常用的快捷键(自查)

IntelliJ IDEA代码常用的快捷键有: Alt回车 导入包,自动修正 CtrlN 查找类 CtrlShiftN 查找文件 CtrlAltL 格式化代码 CtrlAltO 优化导入的类和包 AltInsert 生成代码(如get,set方法,构造函数等) CtrlE或者AltShiftC 最近更改的代码 CtrlR…

leetcode 1489. 找到最小生成树里的关键边和伪关键边(并查集)

给你一个 n 个点的带权无向连通图,节点编号为 0 到 n-1 ,同时还有一个数组 edges ,其中 edges[i] [fromi, toi, weighti] 表示在 fromi 和 toi 节点之间有一条带权无向边。最小生成树 (MST) 是给定图中边的一个子集,它连接了所有…

带彩色字体的man pages(debian centos)

1234567891011121314151617181920212223242526272829303132333435363738我的博客已迁移到xdoujiang.com请去那边和我交流简介most is a paging program that displays,one windowful at a time,the contents of a file on a terminal. It pauses after each windowful and prin…

提取json对象中的数据,转化为数组

var xx1 ["乐谱中的调号为( )调", "写出a自然小调音阶。", "以G为冠音,构写增四、减五音程。", "调式分析。", "将下列乐谱移为C大调。", "正确组合以下乐谱。", "以下…

java 同步块的锁是什么,java – 同步块 – 锁定多个对象

我添加了另一个答案,因为我还没有添加评论给其他人的帖子。>事实上,同步是用于代码,而不是对象或数据。在同步块中用作参数的对象引用表示锁定。所以如果你有如下代码:class Player {// Same instance shared for all players.…

大数据对社交媒体的影响_数据如何影响媒体,广告和娱乐职业

大数据对社交媒体的影响In advance of our upcoming event — Data Science Salon: Applying AI and ML to Media, Advertising, and Entertainment, we asked our speakers, who are some of nation’s leading data scientists in the media, advertising, and entertainment…

Go-项目结构和代码组织

简介 做大量的输入,通过对比、借鉴,加上自己的经验,产出一个尽可能优的方案。 开源界优秀项目的结构示例 因为最新的 Go 版本已经使用 module 作为版本依赖,所以,所有项目的 vendor 我都忽略,建议直接使用 …