上周基本无事,所以上班时间偷空把 DsCache 进化成加强版 2.0.r31. 这次主要加入了生成静态HTML 和 Memcached 内存缓存 这俩小崽子, 不错不错, 无痛转换缓存方式.

DsCache 主页: http://code.google.com/p/dscache/
2.0.r31 版源码: http://dscache.googlecode.com/files/DsCache_2.0.r31.tar.gz

使用举例:(源码目录下 test2)

1. 文件缓存

 1 <?php
 2 /**
 3  * 测试文件缓存  
 4  *
 5  * @filesource testFileCache.php
 6  * @package DsCache
 7  * @subpackage test2
 8  * @version $id: 0.1, utf8, Sat Dec 19 23:18:06 CST 2009
 9  * @author LD King <kldscs[at]gmail.com>
10  * @copyright Copyleft (D.) 2007 – 2009 MiFunny China Inc.
11  * @link http://mifunny.info/
12  * @example
13  *  
14  */
15 require_once ’../Cache.class.php;
16
17 //注: 文件缓存支持所有变量, 不包括对象(拖慢速度)
18 $_config['DsCache'] = array(
19     ’cache_dir‘ => dirname(__FILE__)./tmp‘, //缓存目录(必须),最好用绝对路径
20     ’life_time‘ => 900//全局缓存时间, 默认15min
21     ’encoding_filename‘ => true//用 md5 加密文件名, 默认打开
22     ’cache_dir_umask‘ => 0755//建立子目录时的默认权限
23     );
24 $date = "cache time: ".date(Y-m-d H:m:s);
25
26 //获得缓存
27 //缓存 key 可以多级目录(避免单目录文件超过1k),
28 //  该缓存零时文件的路径为: tmp/cache/key/DsCache_{md5值}.php
29 if( $c = Cache::get(cache/key/date) ){
30     echo "{$c}<br/>\t\nNow: ".date(Y-m-d H:m:s);
31 }else{
32     echo "<br/>\t\nCache Failed!";
33     
34     //设置缓存, 参数: 缓存唯一标识, 数据, 缓存时间
35     //  约定: 如果 ‘life_time’ 设置为 0 表示不检查缓存有效期(即缓存永久有效).  
36     Cache::set(cache/key/date‘, $date, 15);
37 }
38
39 //清除特定缓存
40 //Cache::remove(‘cache/key/date’);
41
42 //清空缓存目录
43 //Cache::clean();
44
45
46 ?>

2. 生成静态HTML

 1 <?php
 2 /**
 3  * 测试生成静态HTML文件
 4  *
 5  * @filesource testHtmlCache.php
 6  * @package DsCache
 7  * @subpackage test2
 8  * @version $id: 0.1, utf8, Sat Dec 19 23:47:21 CST 2009
 9  * @author LD King <kldscs[at]gmail.com>
10  * @copyright Copyleft (D.) 2007 – 2009 MiFunny China Inc.
11  * @link http://mifunny.info/
12  * @example
13  *  
14  */
15
16 require_once ’../Cache.class.php;
17 require_once ’../ob_html_cache.func.php;
18
19 $_config['DsCache'] = array(
20     ’cache_type‘ => ’htmlfile‘, //缓存方式(必须), htmlfile 这个模块只能保存字符串,但文件操作最快
21     ’cache_dir‘ => dirname(__FILE__)./tmp‘, //缓存目录(必须)
22     ’cache_dir_umask‘ => 0777//子目录权限
23     ’life_time‘ => 900//全局缓存时间 900s.
24     ’gizp‘ => true//使用gzip压缩输出页面
25     );
26
27 //调用 ob_cache 函数
28 //  函数自动运行: 第一次载入,缓存当前页; 第二次载入,显示缓存并中断程序;
29 ob_cache();
30 //  缓存显示最后会加上 <!– DsCached –>
31
32 date_default_timezone_set(UTC);
33 echo "What is the time? Oh~~ ".date("D M j G:i:s T Y");
34
35 ?>

3. 内存缓存 Memcached

 1 <?php
 2 /**
 3  *  测试 Memcached 内存缓存
 4  *
 5  * @filesource testMemcached.php
 6  * @package DsCache
 7  * @subpackage test2
 8  * @version $id: 0.1, utf8, Sun Dec 20 00:06:50 CST 2009
 9  * @author LD King <kldscs[at]gmail.com>
10  * @copyright Copyleft (D.) 2007 – 2009 MiFunny China Inc.
11  * @link http://mifunny.info/
12  * @example
13  *  
14  */
15 require_once ’../Cache.class.php;
16
17 //php-memcached主页: http://pecl.php.net/package/memcached
18 //注: 内存缓存支持所有变量, 也包括对象
19 $_config['DsCache'] = array(
20     ’cache_type‘ => ’phpmemcached‘, //缓存类型(必须)
21     ’servers‘ => array(
22         array(host=>127.0.0.1‘, ’port=>11211‘, ’weight=>99),
23         )//服务器列表(必须)
24     ’life_time‘ => 900//全局缓存时间, 默认15min
25     ’persistent‘ => true//持久连接
26     ’compredded‘ => false//压缩数据
27     ’encoding_key‘ => false//加密 key,默认false
28     );
29 $date = "cache time: ".date(Y-m-d H:m:s);
30 //var_dump( $_config );
31 //获得缓存
32 if( $c = Cache::get(cache_key_date) ){
33     echo "{$c}<br/>\t\nNow: ".date(Y-m-d H:m:s);
34 }else{
35     echo "<br/>\t\nCache Failed!";
36     
37     //设置缓存, 参数: 缓存唯一标识, 数据, 缓存时间
38     //  约定: 如果 ‘life_time’ 设置为 0 表示不检查缓存有效期(即缓存永久有效).  
39     Cache::set(cache_key_date‘, $date, 15);
40 }
41
42 //清除特定缓存
43 //Cache::remove(‘cache_key_date’);
44
45 //清空缓存
46 //Cache::clean();
47
48 ?>