网站大量收购独家精品文档,联系QQ:2885784924

Smarty自定义缓存实现.pdf

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Smarty自定义缓存实现

Smarty ⾃定义缓存实现 ⾃定义缓存实现 Smarty默认是使⽤基于⽂件的缓存机制,作为可选的⽅案,你可以⾃定义⼀套缓存机 制的实现,来 ⾏缓存⽂件的读写和删除。 温馨提⽰ Smarty2使⽤$cache_handler_func的回调函数来实现此功能。 ⽽Smarty3使⽤了 Smarty_CacheResource模块来实现。 ⾃定义缓存实现可以实现类似下⾯的⽬的: ⽤更快的存储引擎来替代较慢的⽂件系 统, 使缓存可以分布到多台服务器上。 Smarty可以通过API Smarty_CacheResource_Custom 或 者Smarty_CacheResource_KeyValueStore 来实现缓存机 制。Smarty_CacheResource_Custom是⽐较简单的API ,直接通过覆盖读、写、 删除等操作来实现缓存机制。 该API可以使⽤于任何你觉得适合的⽅式,或存储到任 何你觉得适合的地⽅。Smarty_CacheResource_KeyValueStore的API可让你使 ⽤K-V存储模式 (⽐如APC ,Memcache等)来实现缓存机制。 更 ⼀步,就算是多层 的缓存组如a|b|c ,该API也让你可以通过删除缓存组a来将整个嵌套的缓存组删 除, 即使K-V存储机制本⾝⽆法实现这种层次结构的存储。 ⾃定义缓存可以放到$plugins_dir⽬录下并命名 为cacheresource.foobarxyz.php, 或者在运⾏时通过 registerCacheResource() 来 ⾏注册。 上⾯两种⽅式都必须设 置$caching_type 来启动你的⾃定义缓存机制。 Example 15.15. 通过MySQL实现⾃定义缓存机制 ?php require_once libs/Smarty .class.php; $smarty = new Smarty(); $smarty-caching_type = mysql; /** * MySQL 缓存 * * 通过⾃定义缓存的接⼝API,让MySQL来作为Smarty的输出缓存存储器。 * * 表定义: * preCREATE TABLE IF NOT EXISTS `output_cache` ( * `id` CHAR(40) NOT NULL COMMENT sha1 hash, * `name` VARCHAR(250) NOT NULL, * `cache_id` VARCHAR(250) NULL DEFAULT NULL, * `compile_id` VARCHAR(250) NULL DEFAULT NULL, * `modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, * `content` LONGTEXT NOT NULL, * PRIMARY KEY (`id`), * INDEX(`name`), * INDEX(`cache_id`), * INDEX(`compile_id`), * INDEX(`modified`) * ) ENGINE = InnoDB; /pre * * @package CacheResource-examples * @author Rodney Rehm */ class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Cust // PDO 对象 protected $db; protected $fetch; protected $fetchTimestamp; protected $save; public function __construct() { try { $this-db = new PDO(mysql:dbname=test;host= } catch (PDOException $e) { throw new SmartyException(Mysql 源⽆法链接: . $e-get } $this-fetch = $this-db-prepare(SELECT modified, conten $this-fetchTimesta

文档评论(0)

ayangjiayu4 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档