繁体中文
设为首页
加入收藏
当前位置:PHP技术首页 >> PHP基础 >> 采用 PEAR 来缓冲 PHP 程序(二)

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

2005-01-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:最后,我们来定制一个应用,综合的来解释 PEAR 缓冲机制的整体框架。 我们定义一个叫做 MySQL_Query_Cache 的类,缓冲 SELECT 的查询结果。 我们首先定义类的变量: ’.’, ’filename_prefix’ => ’cache_’),...
关键字:缓冲 程序 PEAR PHP

最后,我们来定制一个应用,综合的来解释 PEAR 缓冲机制的整体框架。

我们定义一个叫做 MySQL_Query_Cache 的类,缓冲 SELECT 的查询结果。

我们首先定义类的变量:

’.’,

’filename_prefix’ => ’cache_’), $expires = 3600)

{

$this->Cache($container, $container_options);

$this->expires = $expires;

}

function _MySQL_Query_Cache() {

if (is_resource($this->connection)) {

mysql_close($this->connection);

}

$this->_Cache();

}

}

?>

在正式开始之前,我们需要一些辅助函数。

function connect($hostname, $username, $password, $database) {

$this->connection = mysql_connect($hostname, $username, $password) or trigger_error(’数据库连接失败!’, E_USER_ERROR);

mysql_select_db($database, $this->connection) or trigger_error(’数据库选择失败!’, E_USER_ERROR);

}

function fetch_row() {

if ($this->cursor result)) {

return $this->result[$this->cursor++];

} else {

return false;

}

}

function num_rows() {

return sizeof($this->result);

}

?>

下面我们来看怎样缓冲:

result = $this->get($cache_id, ’mysql_query_cache’);

if ($this->result == NULL) {

// 缓冲丢失

$this->cursor = 0;

$this->result = array();

if (is_resource($this->connection)) {

// 尽可能采用 mysql_unbuffered_query()

if (function_exists(’mysql_unbuffered_query’)) {$result = mysql_unbuffered_query($query, $this->connection);

} else {$result = mysql_query($query, $this->connection);

}

// 取出所有查询结果

while ($row = mysql_fetch_assoc($result)) {$this->result[] = $row;

}

// 释放 MySQL 结果资源

mysql_free_result($result);

// 把结果缓冲

$this->save($cache_id, $this->result, $this->expires, ’mysql_query_cache’);

}

}

} else {

// 没有查询结果,不需要缓冲

return mysql_query($query, $this->connection);

}

}

?>

例 3: 使用 MySQL 查询缓冲

connect(’hostname’, ’username’, ’password’, ’database’);

$cache->query(’select * from table’);

while ($row = $cache->fetch_row()) {

echo ’

’;

print_r($row);

echo ’’;

}

?>

责任编辑:admin
相关文章