LD 写过一个 DsCache, 当然, 现在集成在新框架中, 嘿嘿, 还是自己写的东…西…好用!
言归正传, 之前 QeePHP 论坛里曾出过这么一个传言, 那就是 phpdatafile 缓存方式速度极快, 老大还说, ta几乎可以和 xcache 匹敌. 于是 LD 杀到 qee 的svn中, look 一点源码. 其实所谓 phpdatafile, 关键在于 var_export , 那么普通php 文件缓存呢? serialize. 简单改写后, 测试了下. 大跌眼镜.
下面是 var_export 和 serialize 两种方式的速度差异(100W次):
Windows XP(xampp 1.7.1 – AMD Athlon(tm) II X2 240 Processor 2.8GHz, 1.75GB Mem) 下结果:
datafile ext Time: 768.691594839
serialfile ext Time: 377.889446974RHEL, Linux 2.6.18-8.el5xen i386(Apache/2.2.3 (Unix) PHP/5.2.9 – AMD Athlon(tm) 64 X2 Dual Core Processor 3600+ 1.9GHz, 0.9GB Mem) 下结果:
datafile ext Time: 255.446233988
serialfile ext Time: 121.841640949
1. 代码文件
1 <?php
2 /**
3 * PHP文件缓存(通过序列化存储, 支持对象缓存)
4 * 时间判断使用 int filemtime ( string $filename )
5 *
6 * @filesource serialfile.class.php
7 * @package peck
8 * @subpackage _cache
9 * @version $id: 0.1, utf8, Tue Jan 26 14:02:27 CST 2010
10 * @author LD King <kldscs[at]gmail.com>
11 * @copyright Copyleft (D.) 2007 – 2009 MiFunny China Inc.
12 * @link http://mifunny.info/
13 * @example
14 * …
15 */
16 class serialfile extends _DsCache{
17
18 /**
19 * 写入缓存
20 * 缓存时间为0, 永不过期
21 *
22 * @param string $id 缓存唯一标识ID
23 * @param mixed $data 缓存内容
24 * @param mixed $expiration 缓存时间,默认 int 900
25 */
26 public function set($id, $data, $expiration=null){
27 $path = $this->_path($id);
28 file_put_contents($path, ‘<?php die(); ?>‘.serialize($data), LOCK_EX);
29 clearstatcache();
30 return true;
31 }
32
33 /**
34 * 读取缓存,失败或缓存撒失效时返回 false
35 *
36 * @param string $id 缓存唯一标识ID
37 * @param array $policy 配置数组
38 *
39 * @return mixed
40 */
41 public function get($id, $expiration=null){
42 $life_time = is_null($expiration) ? $this->_default_policy['life_time'] : $expiration;
43 $path = $this->_path($id);
44
45 if( is_file($path) ){
46 if( $life_time==0 OR
47 (time()-filemtime($path))<=$life_time ){
48 return unserialize( file_get_contents($path,NULL,NULL,15) );
49 }else
50 return false;
51 }else
52 return false;
53 }
54
55 }//END class seriafile
56 ?>
咱没总结呢?
我们自己总结?
==========================
个人小站:男女壁纸城-http://www.nnbizhi.com
为什么PHP的速度就比ASP要快了,感觉是这样的