ZendPlatform动态内容缓存API函数说明与实例
时间:2006-12-01
来源:互联网
Dynamic Content Caching API函数 说明与实例
一、什么是ZendPlatform API:
ZendPlatform的GUI界面为用户提供的是“out-of-the-box”的功能,属于即装即用的功能,不需要对程序本身进行修改。同时,为了最大限度地发挥PHP的性能,ZendPlatform还提供的一系API编程接口。该API接口把cache的范围缩小到单个函数,以代替整个文件的输出。ZendPlatfrom的API是直接内嵌在PHP代码里面的,可以实现函数输出值或数据库访问值的缓存和缓存控制。最常见的ZendPlatform的API是数据缓存(Data Caching)使用数据缓存最大的应用是社区、论坛系统。
Data Caching数据缓存获取的是PHP或者用户定义的函数的执行结果,并以字符串的形式进行缓存。通过使用serialize和unserialize这两个函数你还可以对数列和对象进行缓存。对于直接产生文件输出的函数,我们不建议对它进行缓存,因为如果它被缓存了它将不会再被执行,从而导致文件没有输出。数据缓存中使用的函数包括output_cache_fetch, output_cache_put 和 output_cache_get等。
二、Dynamic Content Caching API函数(Data Caching部分)
1、 string output_cache_fetch(string key, string code, int lifetime)
作用:根据具体的键值来对代码执行的结果进行缓存。如果针对该键值的数据
已经被缓存了,就提取缓存的数据。如果没有的话就重新执行函数,并
把结果保存到缓存中。
注意:需要注意的是这个函数只能以字符串的形式保存数据。所以如果当该函数返回的是数列、对象等其它形式的数据时,请使用PHP的serialization mechanisms转换机制进行转换。同时,可以在代码的其它地方提取该缓存的数据。关于这个转换机制,下文将给出解释。
Example:
<?
function content() {
return microtime();
}
var_dump(output_cache_fetch($_GET['id'], "content();", 300));
?>
在这个例子中,以$_GET['id']为键值。缓存contect()的结果,周期为300秒。
2、void output_cache_output(string key, string code, int lifetime)
作用:和第一个函数相同,只是它将保存整个PHP文件的输出,而不是保存函
数执行结果。
Example:
<?
function content() {
var_dump(microtime());
}
output_cache_output($_GET['id'], "content();", 300);
?>
3、void output_cache_remove (string filename)
作用:去掉某文件名的缓存。
Example:
<?
output_cache_remove("/home/httpd/html/page.php");
?>
4、void output_cache_remove_url (string url)
作用:去掉某链接地址的缓存。
Example:
<?
output_cache_remove_url("/page.php");
?>
5、void output_cache_remove_key (string key)
作用:去掉某一键值相关的数据。
Example:
<?
output_cache_remove_key($_GET['id']);
?>
6、void output_cache_put(string key, mixed data)
作用:把某一键值相关的内容放入缓存。可以放置任何形式的值。
7、void output_cache_get(string key, int lifetime)
作用:从缓存中提取于该键值相关的数据。并且该数据是由函数output_cache_put放进缓存的。
下面列出上面两个函数相结合的一个例子:
Example
if(($result = output_cache_get("FunctionResult", 300)) === false) {
$ result = DoSomeLongCalculation();
output_cache_put("FunctionResult", $result);
}
?>
说明:先判断缓存中是否有对应的数据,缓存的数据的生命周期是300秒。如果没有,执行函数,并把结果进行缓存。
8、boolean output_cache_exists(string key, int lifetime)
作用:先判断缓存中是否有相对应的数据,如果有进行输出并返回真值。如果没有,就等待该文件的输出同时返回假值。该函数应该与output_cache_stop配合使用。
9、void output_cache_stop()
作用:如果数据输出被output_cache_exists函数捕捉到了。停止等待,并把之前所有监听到的数据进行缓存,缓存在用一个键值下。
Example
if(!output_cache_exists("CachedBlock", 300)) {
/* some code */
BuildAndOutputBlock(); // build and output block of data
/* some code */
output_cache_stop();
}
?>
说明:这段代码的作用是对函数在过去的5分钟内的所有执行结果进行缓存。以便接下来的应用中提供所需的数据。
三、补充
为了更好地应用好Zend提供的API函数,这里提供了5条建议:
1.产生输出的循环,常见的产生内容的循环有<select>菜单中的选项,或者是数据库重新提取得网站新闻列表。
2.通常情况下,数据库的访问占用了绝大部分的时间。可以使用数据缓存方式实现数据库访问的缓存。但是这里要注意的是,数据库访问的返回结果只是数据地址,而并不是地址本身,所以在缓冲之前,需要对数据库的返回结果进行转换成真实数据的处理。
3.可以使用缓存段里面的ID里的变量来建立不同的代码执行的不同数据。比如,不同参数经过函数执行后返回的不同执行结果。
4.给不同的函数定义不同的cache周期。
5.可以实现不同代码之间,或者不同用户之间的文档或数据共享,在很多情况下,这个功能可以代替include文件。
举例说明数据缓存的使用。下面是一段PHP的代码,实现select菜单。同时,这段代码使用到serialize();函数。
使用ZendPlatform的API之前:
<?php
$forums = listForums();
put
// Generate a <select> tag from $forums
foreach ($forums as $forum)
{
echo "...";
}
?>
使用ZendPlatform的API我们可以将此代码修改为
<?php
$forums = unserialize(output_cache_fetch("ForumsList", "serialize(listForums())", 600));
?>
如果在缓存中有“ForumsList”的数据,将直接从缓存中提取,从而绕过了执行程序并从数据库提取的环节。
Zend Technologies, Ltd.
Zend 中国技术支持中心
技术部
2006-11-22
[ 本帖最后由 carra 于 2006-12-1 15:15 编辑 ]
一、什么是ZendPlatform API:
ZendPlatform的GUI界面为用户提供的是“out-of-the-box”的功能,属于即装即用的功能,不需要对程序本身进行修改。同时,为了最大限度地发挥PHP的性能,ZendPlatform还提供的一系API编程接口。该API接口把cache的范围缩小到单个函数,以代替整个文件的输出。ZendPlatfrom的API是直接内嵌在PHP代码里面的,可以实现函数输出值或数据库访问值的缓存和缓存控制。最常见的ZendPlatform的API是数据缓存(Data Caching)使用数据缓存最大的应用是社区、论坛系统。
Data Caching数据缓存获取的是PHP或者用户定义的函数的执行结果,并以字符串的形式进行缓存。通过使用serialize和unserialize这两个函数你还可以对数列和对象进行缓存。对于直接产生文件输出的函数,我们不建议对它进行缓存,因为如果它被缓存了它将不会再被执行,从而导致文件没有输出。数据缓存中使用的函数包括output_cache_fetch, output_cache_put 和 output_cache_get等。
二、Dynamic Content Caching API函数(Data Caching部分)
1、 string output_cache_fetch(string key, string code, int lifetime)
作用:根据具体的键值来对代码执行的结果进行缓存。如果针对该键值的数据
已经被缓存了,就提取缓存的数据。如果没有的话就重新执行函数,并
把结果保存到缓存中。
注意:需要注意的是这个函数只能以字符串的形式保存数据。所以如果当该函数返回的是数列、对象等其它形式的数据时,请使用PHP的serialization mechanisms转换机制进行转换。同时,可以在代码的其它地方提取该缓存的数据。关于这个转换机制,下文将给出解释。
Example:
<?
function content() {
return microtime();
}
var_dump(output_cache_fetch($_GET['id'], "content();", 300));
?>
在这个例子中,以$_GET['id']为键值。缓存contect()的结果,周期为300秒。
2、void output_cache_output(string key, string code, int lifetime)
作用:和第一个函数相同,只是它将保存整个PHP文件的输出,而不是保存函
数执行结果。
Example:
<?
function content() {
var_dump(microtime());
}
output_cache_output($_GET['id'], "content();", 300);
?>
3、void output_cache_remove (string filename)
作用:去掉某文件名的缓存。
Example:
<?
output_cache_remove("/home/httpd/html/page.php");
?>
4、void output_cache_remove_url (string url)
作用:去掉某链接地址的缓存。
Example:
<?
output_cache_remove_url("/page.php");
?>
5、void output_cache_remove_key (string key)
作用:去掉某一键值相关的数据。
Example:
<?
output_cache_remove_key($_GET['id']);
?>
6、void output_cache_put(string key, mixed data)
作用:把某一键值相关的内容放入缓存。可以放置任何形式的值。
7、void output_cache_get(string key, int lifetime)
作用:从缓存中提取于该键值相关的数据。并且该数据是由函数output_cache_put放进缓存的。
下面列出上面两个函数相结合的一个例子:
Example
if(($result = output_cache_get("FunctionResult", 300)) === false) {
$ result = DoSomeLongCalculation();
output_cache_put("FunctionResult", $result);
}
?>
说明:先判断缓存中是否有对应的数据,缓存的数据的生命周期是300秒。如果没有,执行函数,并把结果进行缓存。
8、boolean output_cache_exists(string key, int lifetime)
作用:先判断缓存中是否有相对应的数据,如果有进行输出并返回真值。如果没有,就等待该文件的输出同时返回假值。该函数应该与output_cache_stop配合使用。
9、void output_cache_stop()
作用:如果数据输出被output_cache_exists函数捕捉到了。停止等待,并把之前所有监听到的数据进行缓存,缓存在用一个键值下。
Example
if(!output_cache_exists("CachedBlock", 300)) {
/* some code */
BuildAndOutputBlock(); // build and output block of data
/* some code */
output_cache_stop();
}
?>
说明:这段代码的作用是对函数在过去的5分钟内的所有执行结果进行缓存。以便接下来的应用中提供所需的数据。
三、补充
为了更好地应用好Zend提供的API函数,这里提供了5条建议:
1.产生输出的循环,常见的产生内容的循环有<select>菜单中的选项,或者是数据库重新提取得网站新闻列表。
2.通常情况下,数据库的访问占用了绝大部分的时间。可以使用数据缓存方式实现数据库访问的缓存。但是这里要注意的是,数据库访问的返回结果只是数据地址,而并不是地址本身,所以在缓冲之前,需要对数据库的返回结果进行转换成真实数据的处理。
3.可以使用缓存段里面的ID里的变量来建立不同的代码执行的不同数据。比如,不同参数经过函数执行后返回的不同执行结果。
4.给不同的函数定义不同的cache周期。
5.可以实现不同代码之间,或者不同用户之间的文档或数据共享,在很多情况下,这个功能可以代替include文件。
举例说明数据缓存的使用。下面是一段PHP的代码,实现select菜单。同时,这段代码使用到serialize();函数。
使用ZendPlatform的API之前:
<?php
$forums = listForums();
put
// Generate a <select> tag from $forums
foreach ($forums as $forum)
{
echo "...";
}
?>
使用ZendPlatform的API我们可以将此代码修改为
<?php
$forums = unserialize(output_cache_fetch("ForumsList", "serialize(listForums())", 600));
?>
如果在缓存中有“ForumsList”的数据,将直接从缓存中提取,从而绕过了执行程序并从数据库提取的环节。
Zend Technologies, Ltd.
Zend 中国技术支持中心
技术部
2006-11-22
[ 本帖最后由 carra 于 2006-12-1 15:15 编辑 ]
作者: carra 发布时间: 2006-12-01
学习一下
作者: xiaojia 发布时间: 2006-12-01
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28