用PHP去实现数据库查询结果缓存_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用PHP去实现数据库查询结果缓存_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3489字,纯文字阅读大概需要5分钟。
内容图文
![用PHP去实现数据库查询结果缓存_PHP教程](/upload/InfoBanner/zyjiaocheng/184/0cc5debfa6714e318cf90803538e7b31.jpg)
用PHP去实现数据库查询结果缓存
有些时候我们希望减少对数据库的查询来提高程序的性能,因为这些数据不是经常变更的,而是会在很长一段时间内都不会变化,因此,我们每连接一次数据库,都会把相应的结果用文件的形式保存起来。比如对于一个商城来说,我们的商品的数量可能会经常变,但是我们的商品类型以及商品的价格这些东西都会在很长的一段时间内不会变更,如果我们需要频繁的查询它们的时候,就可以使用数据库缓存技术。
缓存的原因
第一点首先看我们普通情况下执行一条SQL查询的开销,我们先连接数据库,然后准备SQL查询,接下来发送查询信息,然后取得返回结果,最后关闭数据库连接,这样的话会占用较多的资源,而我们的PHP程序也因为要等待从数据库中查询而使得响应速度变慢。
第二点就是在数据库压力较大时,比如高峰时段,这个时候数据库压力大,我们就需要把一些数据存储到硬盘上,用文件的形式去读取,这样的做法是用我们的硬盘空间换取数据库的压力,这一点也要看机器性能。
第三点就是有些数据不着急去更新,比如上面提到的商品类型表,就不会太急于更新,比如我们的用户的核心信息,一般也不会轻易去修改密码什么的,这些内容可以选择用文件的形式去缓存起来。
缓存的实现原理
第一点就是我们要确定何时强制更新内容,最常见的有三种方式就是第一个就是用时间去触发,我们通常使用时间戳,第二点就是发现数据库数据被修改,则自动更新缓存,第三个就是人工触发,我们用人工的防水告诉信息系统强制更新缓存内容。
第二点就是我们可以通过使用serialize()函数来把从数据库中取得的数据进行序列化,保存为本地文件,然后我们通过unserialize来从本地文件中读取信息,所谓序列化就是用特定的方式去存储PHP的值,它会保证部丢失这些值的类型和结构。
实战演示
我们首先把从数据库中读取的数据存入本地文件,代码如下:
<?php //第一步连接数据库 $conn = mysqli_connect("localhost","root","","bbs"); //第二步设置相应的字符编码 $setting = 'set names utf8'; mysqli_query($conn,$setting); //第三步进行查询 $sql = 'SELECT * FROM user'; $result = mysqli_query($conn,$sql); //第四步把查询结果转化为一个数组 $rows = mysqli_num_rows($result); $sqldata = array(); for($i = 0;$i <$rows;$i ++){ $sqldata[] = mysqli_fetch_assoc($result); } //第五步把结果写到缓存文件 $file = "sqlcache.txt"; $msg = serialize($sqldata); $fp = fopen($file,"w"); fputs($fp,$msg); fclose($fp);
然后我们可以打开这个sqlcache.txt文件,它的内容如下:
a:6:{i:0;a:4:{s:2:"id";s:1:"1";s:5:"level";s:1:"0";s:4:"name";s:6:"辛星";s:3:"pwd";s:32:"bd04fcc97578ce33ca5fb331f42bc375";}i:1;a:4:{s:2:"id";s:1:"2";s:5:"level";s:1:"1";s:4:"name";s:6:"小倩";s:3:"pwd";s:32:"61cb72858be523b9926ecc3d7da5d0c6";}i:2;a:4:{s:2:"id";s:1:"3";s:5:"level";s:1:"1";s:4:"name";s:6:"小楠";s:3:"pwd";s:32:"a3d2de7675556553a5f08e4c88d2c228";}i:3;a:4:{s:2:"id";s:1:"4";s:5:"level";s:1:"1";s:4:"name";s:6:"刘强";s:3:"pwd";s:32:"fcdb06a72af0516502e5fdccc9181ee0";}i:4;a:4:{s:2:"id";s:1:"5";s:5:"level";s:1:"1";s:4:"name";s:6:"星哥";s:3:"pwd";s:32:"866a6cafcf74ab3c2612a85626f1c706";}i:5;a:4:{s:2:"id";s:1:"6";s:5:"level";s:1:"1";s:4:"name";s:6:"辛勇";s:3:"pwd";s:32:"e93beb7663f3320eaa0157730d02dd0c";}}然后我们可以写一个程序从该文件中读取数据,PHP代码如下:
<?php $file = "sqlcache.txt"; $msg = file_get_contents($file); $result = unserialize($msg); var_dump($result);
这样我们的$result就是从本地的txt文件中读取的数据,而不是从数据库中读取的数据了,即我们模拟了缓存的使用。
说明:
1.我们通过filemtime来得到文件的创建时间,可以用time来得到现在的时间,通过比较这个差值来决定是否要更新缓存。
2.我们可以用unlink来强制的删除文件以清空数据缓存
http://www.bkjia.com/PHPjc/847854.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/847854.htmlTechArticle用PHP去实现数据库查询结果缓存 有些时候我们希望减少对数据库的查询来提高程序的性能,因为这些数据不是经常变更的,而是会在很长一...
内容总结
以上是互联网集市为您收集整理的用PHP去实现数据库查询结果缓存_PHP教程全部内容,希望文章能够帮你解决用PHP去实现数据库查询结果缓存_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。