采用 PEAR 来缓冲 PHP 程序(一)

我来自地下城

我来自地下城

2016-01-29 13:40

采用 PEAR 来缓冲 PHP 程序(一),采用 PEAR 来缓冲 PHP 程序(一)

PHP 世界中缓冲是一个热门的话题,因为 PHP 产生的动态页面,每次用户请求都需要重新计算,不论请求的结果是否一样,同时,PHP 每次都会编译一次脚本。这样的超负荷运转对一个流量很高的网站来说肯定难以忍受。幸运的是, Web 的结果可以缓冲,而不需要重新运行和编译脚本,商品化的产品像 ZendCache 或者开源的 Alternate PHP Cache都提供了把 PHP 脚本编译为字节代码并缓冲的办法。

PEAR 的缓冲包提供了缓冲动态内容,数据库查询和 PHP 函数调用的框架。

就像 Perl 有 CPAN, TeX 有 CTAN,PHP 也有自己的中心资源库,存放类,库和模块。这个库称为 PEAR(PHP Extension and Add-On Repository)。

本文假设你已经安装了 PEAR 环境,如果没有的话,可以去 PHP 网站下载。


PEAR 的缓冲包包含一个总体的缓冲类和几个特别的子类。缓冲类使用容器类来存贮和管理缓冲数据。

下面是 PEAR 缓冲当前所包含的容器,以及各自的参数:

file -- file 容器在文件系统存储了缓冲的数据,是最快的容器。

cache_dir -- 这是容器存储文件的目录。

filename_prefix -- 缓冲文件的前缀,例如:"cache_"。

shm -- shm 容器把缓冲数据放入共享内存,基准测试显示,目前的实现下,这个容器的速度要比文件容器慢。

shm_key -- 共享内存使用的键值。

shm_perm -- 使用共享内存数据段的权限。

shm_size -- 分配共享内存的大小。

sem_key -- 信号灯的键值。

sem_perm -- 信号灯的权限。

db -- PEAR 的数据库抽象层。

dsn -- 数据库连接的 DSN 。可以参考 PEAR 的 DB 文档。

cache_table -- 表的名字。

phplib -- phplib 容器使用数据库抽象层存储缓冲。

db_class

db_file

db_path

local_file

local_path

ext/dbx -- PHP 的数据库抽象层扩展,如果像把缓冲存入数据库,可以采用这个容器。

module

host

db

username

password

cache_table

persistent

使用 PEAR Cache 所得到的性能提升取决于你所选择的缓冲容器,例如,把数据库的结果再次存入数据库缓冲中就显得毫无意义。

PEAR Cache 的函数缓冲模块能把任何函数或者方法的结果缓冲,不论是 PHP 的内置函数还是用户自定义函数,他缺省采用文件容器,把缓冲数据放入到一个叫做
function_cache 的目录。


Cache_Function 类的构造器可以有三个可选的参数:

$container :缓冲容器的名字。

$container_options :缓冲容器的数组参数。

$expires:缓冲对象过期的时间(秒数)。

普通的函数调用采用 Cache_Function 类的 call() 方法时,就能触发缓冲。调用 call() 很容易,的一个参数是函数的名字,然后是函数的参数,第二个参数是要调用函数中的第一个,依此类推,我们来看例子:

例 1: 缓冲函数和方法的调用

// 调用 PEAR Cache 的函数缓冲。

<?php
require_once ’Cache/Function.php’;

// 定义一些类和函数。

class foo {
function bar($test) {
echo "foo::bar($test)
";
}
}

class bar {
function foobar($object) {
echo ’$’.$object.’-foobar(’.$object.’)
’;
}
}

$bar = new bar;

function foobar() {
echo ’foobar()’;
}

// 取得 Cache_Function 对象

$cache = new Cache_Function();

// 对 foo 类的静态函数 bar() 作缓冲(foo::bar())。
$cache-call(’foo::bar’, ’test’);

// $bar-foobar()
$cache-call(’bar-foobar’, ’bar’);

$cache-call(’foobar’);
?

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/php/)



下面我们采用 Cache_Output 来把输出作缓冲:

例子 2: 缓冲脚本的输出

// 加载 PEAR Cache 的输出缓冲

<?php
require_once ’Cache/Output.php’;

$cache = new Cache_Output(’file’, array(’cache_dir’ = ’.’) );

// 计算要缓冲页面的标记,我们假定页面的缓冲取决于
// URL, HTTP GET 和 POST 变量以及 cookies。

$cache_id = $cache-generateID(array(’url’ = $REQUEST_URI, ’post&r

展开更多 50%)
分享

猜你喜欢

采用 PEAR 来缓冲 PHP 程序(一)

PHP
采用 PEAR 来缓冲 PHP 程序(一)

采用 PEAR 来缓冲 PHP 程序(二)

PHP
采用 PEAR 来缓冲 PHP 程序(二)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用Pear加速PHP程序开发

PHP
用Pear加速PHP程序开发

用PEAR来写你的下一个php程序

Web开发
用PEAR来写你的下一个php程序

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

10个网络规划PEAR类 来简化PHP编码

PHP
10个网络规划PEAR类 来简化PHP编码

如何使用PHP来编写一个自动投票程序

PHP
如何使用PHP来编写一个自动投票程序

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Flash组件之旅(2):组件样式(1)

Flash组件之旅(2):组件样式(1)

Flash MX 2004界面掠影(3)

Flash MX 2004界面掠影(3)
下拉加载更多内容 ↓