数据缓存的基本原理

1 0 321

数据缓存的原理很简单,把从数据库得到的数据写进缓存文件中,在一个时间段内,如果缓存文件存在,

就读取缓存文件的内容,不存在则读取数据库并缓存在文本中

举个例子:

<?php
//数据缓存文件
$file = ‘sql_cache.txt’;
$expire_time = 86400;

if (file_exists($file) && filemtime($file) > (time() – $expire_time))
{
$records = unserialize(file_get_contents($file));
}
else
{
$link = mysql_connect(‘localhost’,'root’,’123456′) or die(mysql_error());
mysql_select_db(‘test’) or die (mysql_error());
mysql_query(“set names utf8″);
$query = “SELECT * FROM province”;
$result = mysql_query($query) or die (mysql_error());
while ($record = mysql_fetch_array($result))
{
$records[] = $record;
}

$file = ‘sql_cache.txt’;
$output = serialize($records);
$fp = fopen($file,”w”); // 以写权限的方式打开文件
fputs($fp, $output);
fclose($fp);
}

foreach ($records as $id=>$row)
{
print $row['id'].’—’.$row['name'].”<br>”;
}
?>

 

测试sql:

– —————————-
– Table structure for `province`
– —————————-
DROP TABLE IF EXISTS `province`;
CREATE TABLE `province` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) character set utf8 default NULL,
PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

– —————————-
– Records of province
– —————————-
INSERT INTO `province` VALUES (’1′, ‘北京市’);
INSERT INTO `province` VALUES (’2′, ‘天津市’);
INSERT INTO `province` VALUES (’3′, ‘上海市’);
INSERT INTO `province` VALUES (’4′, ‘重庆市’);
INSERT INTO `province` VALUES (’5′, ‘河北省’);
INSERT INTO `province` VALUES (’6′, ‘山西省’);
INSERT INTO `province` VALUES (’7′, ‘台湾省’);
INSERT INTO `province` VALUES (’8′, ‘辽宁省’);
INSERT INTO `province` VALUES (’9′, ‘吉林省’);
INSERT INTO `province` VALUES (’10′, ‘黑龙江省’);
INSERT INTO `province` VALUES (’11′, ‘江苏省’);
INSERT INTO `province` VALUES (’12′, ‘浙江省’);
INSERT INTO `province` VALUES (’13′, ‘安徽省’);
INSERT INTO `province` VALUES (’14′, ‘福建省’);
INSERT INTO `province` VALUES (’15′, ‘江西省’);
INSERT INTO `province` VALUES (’16′, ‘山东省’);
INSERT INTO `province` VALUES (’17′, ‘河南省’);
INSERT INTO `province` VALUES (’18′, ‘湖北省’);
INSERT INTO `province` VALUES (’19′, ‘湖南省’);
INSERT INTO `province` VALUES (’20′, ‘广东省’);
INSERT INTO `province` VALUES (’21′, ‘甘肃省’);
INSERT INTO `province` VALUES (’22′, ‘四川省’);
INSERT INTO `province` VALUES (’23′, ‘贵州省’);
INSERT INTO `province` VALUES (’24′, ‘海南省’);
INSERT INTO `province` VALUES (’25′, ‘云南省’);
INSERT INTO `province` VALUES (’26′, ‘青海省’);
INSERT INTO `province` VALUES (’27′, ‘陕西省’);
INSERT INTO `province` VALUES (’28′, ‘广西壮族自治区’);
INSERT INTO `province` VALUES (’29′, ‘西藏自治区’);
INSERT INTO `province` VALUES (’30′, ‘宁夏回族自治区’);
INSERT INTO `province` VALUES (’31′, ‘新疆维吾尔自治区’);
INSERT INTO `province` VALUES (’32′, ‘内蒙古自治区’);
INSERT INTO `province` VALUES (’33′, ‘澳门特别行政区’);
INSERT INTO `province` VALUES (’34′, ‘香港特别行政区’);

留言

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>