rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 程序开发 » PHP

PHP Adodb的分页查询和Smarty缓存性能测试

测试环境:

WindowsXP IIS6 / PHP 5.21 / MySQL 5.1

数据库有283222条数据.

测试情况:

select  id 不使用缓存的情况下,用Adodb的分页查询(PageExecute),每页需要 5-6秒

select  *  不使用缓存的情况下,用Adodb的分页查询(PageExecute),每页需要 20秒以上.

使用Adodb的缓存分页查询(CachePageExecute),打开速度未见明显提升,因此放弃使用CachePageExecute .

使用Smarty缓存,查询结果生成静态文件保存.访问速度如同静态页,但不是静态页,是要经过php处理的.(决定使用此方法)

方法代码:

<?php

include_once('./islogin.php');

require  './libs/smarty/Smarty.class.php';

include_once('./config/app.php');

$per = 20;   //每页显示数量

$page = isset($_GET['page'])? $_GET['page'] : 1 ;

if(ereg('^[0-9]+$',$page) !=1)

                   $page = 1;

$sm = new Smarty;

$sm -> template_dir = "./templates/$web_lang";

$sm -> compile_dir  = "./templates_c/$web_lang";

$sm ->caching = true; //开启缓存

//判断缓存是否存在

if(!$sm->is_cached('master_websites.htm',$_SESSION['author_id'],$page)) {

$uid = $_SESSION['author_id'];

$sql = "select name,id,email from users";

$websites = $webconn-> PageExecute($sql, $per, $page); //分页查询

$page_str = '';

if (!$websites->EOF ) //&& (!$websites->AtFirstPage() || !$websites->AtLastPage())) {

         if(!$websites->AtFirstPage())

         {

                   $page_str .= "<a href='websites.php'>首页</a> <a href='websites.php?page=".($websites->AbsolutePage() - 1)."'>前页</a>";

         }

         if(!$websites->AtLastPage())

         {

                   $page_str .= " <a href='websites.php?page=".($websites->AbsolutePage() +1)."'>后页</a> <a href='websites.php?page=".($websites->LastPageNo())."'>尾页</a>";

         }

         $page_str .=' '. $w['current_page'] .$websites->AbsolutePage() .' '. $w['total_page'] .$websites->LastPageNo();

$ws = $websites->GetRows();

$show = (sizeof($ws)>0);

$sm -> assign('page_title',$page_title);

$sm -> assign('ws',$ws);

$sm -> assign('show',$show);

$sm -> assign('page_str',$page_str);

$sm -> display('master_websites.htm',$_SESSION['author_id'],$page); //区分不同用户,不同页面生成的缓存文件

include_once('config/end.php');

//$sm->clear_cache(null,$_SESSION['author_id']); //清空该用户的所有缓存,在设计到修改,添加,删除操作的时候,都要记得清空.

?>

顶一下
(0)
踩一下
(1)