再有2个月就该庆祝自己参加工作3年整了,也是自己运用php3年整了,经常自省自己的技术实力:在一些方面还存在不足,所以就写了这篇博客,自己也是在网上抄的望大家不要见笑,现在很多网站都运用了缓存技术,自己在这方面还有不足的地方,前几天在工作中老大教了一点感觉受用了虽然代码不多当然很感谢他了;下面是我自己在网上找的一些实例也算是初步实际了解了缓存的机制了,博客的原文地址是:http://blog.sina.com.cn/s/blog_780d4de70100xin1.html
// 首先建立cache文件 (运行后部分代码有注释结果)
class cache {
private $dir;
private $lifetime;
private $cacheid;
private $ext;
function __construct($dir='',$lifetime='') {
if ($this->dir_isvalid($dir)) { // $dir cache/
$this->dir = $dir;
$this->lifetime = $lifetime; // 10
$this->ext = '.Php';
$this->cacheid = $this->getcacheid();
// $this->getcacheid(): cache/003d47a2f66c6d7f0f05a18243ca162c.php
}
}
private function isvalid() {
if (!file_exists($this->cacheid)) return false;
if (!(@$mtime = filemtime($this->cacheid))) return false;
if (mktime() - $mtime > $this->lifetime) return false;
return true;
}
public function write($mode=0,$content='') {
switch ($mode) { // int(0)
case 0:
$content = ob_get_contents();
/*var_dump($content);exit;
string(112) "time123hahhah:13:16:33 20th April
time3456hahha:13:16:33 20th April*/
break;
default:
break;
}
ob_end_flush(); // 冲刷出(送出)输出缓冲区内容并关闭缓冲
try {
file_put_contents($this->cacheid,$content); // 将字符串写入文件
}
catch (Exception $e) {
$this->error('写入缓存失败!请检查目录权限!');
}
}
public function load() { // 程序貌似没走到这个函数
if ($this->isvalid()) { //var_dump('111');exit;
echo "<span style='display:;'>This is Cache.</span> ";
//以下两种方式,哪种方式好?????
require_once($this->cacheid);
//echo file_get_contents($this->cacheid);
exit();
}
else { //var_dump('222');exit; ++
ob_start();
}
}
public function clean() { // 这个函数是清除缓存文件的
try {
unlink($this->cacheid); 删除 cache/003d47a2f66c6d7f0f05a18243ca162c.php缓存文件
}
catch (Exception $e) {
$this->error('清除缓存文件失败!请检查目录权限!');
}
}
private function getcacheid() {
return $this->dir.md5($this->geturl()).$this->ext;
// cache/003d47a2f66c6d7f0f05a18243ca162c.php
}
private function dir_isvalid($dir) {
if (is_dir($dir)) return true;
try {
mkdir($dir,0777); // 缓存文件不存在就mkdir
}
catch (Exception $e) {
$this->error('所设定缓存目录不存在并且创建失败!请检查目录权限!');
return false;
}
return true;
}
private function geturl() {
$url = '';
if (isset($_SERVER['REQUEST_URI'])) {
$url = $_SERVER['REQUEST_URI'];
}
else {
$url = $_SERVER['Php_SELF'];
$url .= empty($_SERVER['QUERY_STRING'])?'':'?'.$_SERVER['QUERY_STRING'];
}
return $url;
}
private function error($str) {
echo '<div style="color:red;">'.$str.'</div>';
}
}
// 在建立 test.php文件
require_once('cache.php');
$cachedir = 'cache/'; //设定缓存目录
$cache = new Cache($cachedir,10); //省略参数即采用缺省设置, $cache = new Cache($cachedir);
if ($_GET['cacheact'] != 'rewrite') //此处为一技巧,通过xx.Php?cacheact=rewrite更新缓存,以此类推,还可以设定一些其它操作
$cache->load(); //装载缓存,缓存有效则不执行以下页面代码
//页面代码开始
echo $time = "第一个缓存字符串:".date('H:i:s jS F',time()).'<br/>';
echo $time2 = "第二个缓存字符串:".date('H:i:s jS F',time()).'<br/>';
echo '<a href="?cacheact=rewrite">更新</a>';
//页面代码结束
$cache->write(); //首次运行或缓存过期,生成缓存
//$cache->write(1,$time2); //只缓存$time部分的数据
// 在浏览器里输入http://localhost/test/ztest.php 可能会有错但不用担心
// 运行结果:
Notice: Undefined index: cacheact in D:\wamp_php\wamp\www\test\ztest.php on line 11
Strict Standards: mktime(): You should be using the time() function instead in D:\wamp_php\wamp\www\test\cache.php on line 20
第一个缓存字符串:13:51:00 20th April
第二个缓存字符串:13:51:00 20th April
更新
// 生成的缓存文件是:
cache\003d47a2f66c6d7f0f05a18243ca162c.Php
/* 第一个缓存字符串:13:31:26 20th April<br/>第二个缓存字符串:13:31:26 20th April<br/><a href="?cacheact=rewrite">更新</a> */
cache\834bf560e67a566ef08efa0df269894e.Php
/* 第一个缓存字符串:13:51:00 20th April<br/>第二个缓存字符串:13:51:00 20th April<br/><a href="?cacheact=rewrite">更新</a> */
// 这里报了两个错误 ,点击链接 更新 (http://localhost/test/ztest.php?cacheact=rewrite) ,错误是因为你没有传入参数 cacheact ,点击 更新 链接 就不会报错了;
当你更改 test.php 里的$time和$time2的内容的时候 点击 更新链接 cache\003d47a2f66c6d7f0f05a18243ca162c.Php缓存的文件内容会更新成你更改后的内容 但是 cache\834bf560e67a566ef08efa0df269894e.Php的内容却还是原来的没有被改变。
这个问题你来回答吧
// 这个函数就是自己写的那个缓存应用(thinkphp框架下写的)
public function choicedatedata($choiceTime){
$cacheName = 'laterdatedata_'.$choiceTime; // laterdatedata_2014-03-16
$ret = cache($cacheName);
if(!$ret){
$sql = "select count(0) as a from edl_login_game_log where DATE_FORMAT(CreateTime,'%Y-%m-%d') = '".$choiceTime."' and Username not in (select UserName from edl_login_game_log where DATE_FORMAT(CreateTime,'%Y-%m-%d')< '".$choiceTime."' group by UserName) group by UserName";
$ret = $this->query($sql);
cache($cacheName,$ret);
}
return $ret;
}
相关推荐
### PHP Memcached 高级缓存应用代码解析 #### Memcached类方法详解 在PHP中,`Memcache`类提供了与Memcached服务器交互的接口。下面,我们将详细解释部分关键方法及其用法: 1. **`Memcache::add()`** - 如果键...
- 另一个高性能的 PHP 扩展,提供代码和数据缓存功能。 - 由国内开发者开发,在国内拥有较高的使用率。 #### 八、使用缓存时易忽视的问题 1. **何时使用缓存:**一般建议在完成基本的系统架构设计后再考虑引入...
个简单至极的PHP缓存类代码,缓存的应用对于php项目的开发来说尤为重要 使用说明: 1、实例化 $cache = new Cache(); 2、设置缓存时间和缓存目录 $cache = new Cache(60, '/any_other_path/'); 第一个参数是缓存...
PHP缓存技术是提高PHP应用性能的重要手段。它通过减少服务器的计算量、数据库查询次数以及网络传输数据量,来实现提高响应速度和降低服务器负载的目的。下面将详细解析php缓存技术涉及的关键知识点。 一、全页面...
5.2 PHP缓存技术 除了静态化,PHP的缓存技术也是优化性能的重要手段。常见的PHP缓存技术包括: 1. **opcode缓存**:如APC (Alternative PHP Cache) 和OPcache(PHP 5.5及以上版本默认内置),它们将PHP代码编译成...
上述代码中,`ob_start()`函数用于创建一个新的PHP缓存。`ob_flush()`函数则负责将当前缓存中的数据写入到上级缓存(这里是Apache缓存),而`flush()`函数则用于将Apache缓存中的数据发送到浏览器。通过这种方式,...
本文将详细介绍如何通过PHP代码来实现页面缓存的禁止。 #### 一、基本概念 1. **缓存**:缓存是指存储最近或频繁访问的数据副本的过程,目的是减少响应时间并降低服务器负载。 2. **页面缓存**:特定于Web应用,指...
本文将详细介绍PHP企业级应用中常见的缓存技术,并通过Discuz的搜索功能例子加以说明。 首先,我们来谈谈数据缓存。数据缓存主要针对的是数据库查询的缓存。在企业级应用中,数据库往往是最为沉重的性能瓶颈。通过...
### 详解PHP缓存技术在网站开发中的应用 在当今高度依赖互联网的时代,网站的响应速度和用户体验成为了吸引用户的关键因素。随着网站流量的增加,数据库的查询压力也随之增大,这不仅影响了网站的性能,还可能导致...
标题中的“PHP100视频教程30:PHP模板引擎Smarty缓存应用”是指一系列针对初学者和进阶者的PHP编程教程,其中的第30讲重点讲解了PHP的 Smarty 模板引擎以及其在缓存应用上的实现。Smarty 是一个广泛使用的PHP模板...
这有助于避免不同应用程序之间的缓存条目冲突。 #### 3. `store($key, $value)` 实现 `store` 方法时,使用了 `apc_store` 函数来存储缓存项。需要注意的是,实际的存储键是由 `_storageKey` 方法生成的,该方法未...
**标题:“MemCache对象缓存应用”** **一、MemCache简介** MemCache是一种高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载,提高应用程序的性能。它通过将数据存储在内存中,实现快速...
【PHP与Memcached高级缓存应用】 在现代Web开发中,高效的缓存策略是提高网站性能的关键。PHP作为广泛使用的服务器端脚本语言,结合Memcached这种高性能的分布式内存对象缓存系统,可以显著提升数据读取速度,降低...
本讲主要介绍了Smarty在缓存应用方面的知识,包括配置、使用、清除以及与MySQL的结合。 1. Smarty缓存的配置: 在使用Smarty进行缓存时,首先需要在配置文件(通常为`config.php`)中启用缓存功能。这可以通过设置...
这里的"php缓存生成html类"是指通过编写PHP类来实现这一功能。这个类通常包含一系列方法,用于捕获PHP输出、存储为HTML文件,并在后续请求中直接返回这些静态页面,而不是重新执行PHP代码。 `ob_start()` 是PHP中的...
在PHP开发中,缓存是提高网站性能的关键技术之一,Memcached是一款广泛应用的分布式内存对象缓存系统。这个“php memcached缓存操作类”旨在简化开发者对Memcached的使用,提供一个方便、高效的接口来处理数据缓存。...