0

0

一个带缓存数据功能的mysqli类_PHP教程

php中文网

php中文网

发布时间:2016-07-13 17:05:55

|

1183人浏览过

|

来源于php中文网

原创

下面来分享一个带缓存数据功能的mysqli类,有需要的同学可看看。

 代码如下 复制代码

 

iestore开源网上商店系统
iestore开源网上商店系统

IEStore是一款B2C独立网上商店系统,适合企业及个人快速构建个性化网上商店。系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。IEStore网上商店系统不仅在产品功能、稳定性、安全性和SEO支持(搜索引擎优化)等方面具有在同类产品领先地位,重要的是在功能架构上、操作上符合国际化标准,成为国际化电子商务的最佳软件选择之一。功能概要国际化标准IEStore网上商店系统是一个带有多国

下载

    /** 
    * Mysqli类 
    * 
    * @author 废墟 
    * @version v1.0 2009-08-18 

    */  
    class db_mysqli {  
        protected $mysqli;  
        protected $sql;  
        protected $rs;  
        protected $query_num    = 0;  
        protected $fetch_mode    = MYSQLI_ASSOC;  
        protected $cache_dir    = './cache/';  
        protected $cache_time    = 1800;  
 
        public function  __construct($dbhost, $dbuser, $dbpass, $dbname) {  
            $this->mysqli    = new mysqli($dbhost, $dbuser, $dbpass, $dbname);  
            if(mysqli_connect_errno()) {  
                $this->mysqli    = false;  
                echo '

'.mysqli_connect_error().'

';  
                die();  
            } else {  
                $this->mysqli->set_charset("utf8");  
            }  
        }  
 
        public function  __destruct() {  
            $this->free();  
            $this->close();  
        }  
 
        protected function free() {  
            @$this->rs->free();  
        }  
 
        protected function close() {  
            $this->mysqli->close();  
        }  
 
        protected function fetch() {  
            return $this->rs->fetch_array($this->fetch_mode);  
        }  
 
        protected function getQuerySql($sql, $limit = null) {  
            if (@preg_match("/[0-9]+(,[ ]?[0-9]+)?/is", $limit) && !preg_match("/ LIMIT [0-9]+(,[ ]?[0-9]+)?$/is", $sql)) {  
                $sql .= " LIMIT " . $limit;  
            }  
            return $sql;  
        }  
 
        protected function get_cache($sql,$method) {  
            include_once './cache.php';//若框架中使用__autoload(),这里可以不用加载文件  
            $cache    = new cache($this->cache_dir,$this->cache_time);  
            $cache_file    = md5($sql.$method);  
            $res    = $cache->get_cache($cache_file);  
            if(!$res) {  
                $res    = $this->$method($sql);  
                $cache->set_cache($cache_file, $res);  
            }  
            return $res;  
        }  
 
        public function query_num() {  
            return $this->query_num;  
        }  
 
        public function set_cache_dir($cache_dir) {  
            $this->cache_dir    = $cache_dir;  
        }  
 
        public function set_cache_time($cache_time) {  
            $this->cache_time    = $cache_time;  
        }  
 
        public function query($sql, $limit = null) {  
            $sql    = $this->getQuerySql($sql, $limit);  
            $this->sql    = $sql;  
            $this->rs    = $this->mysqli->query($sql);  
            if (!$this->rs) {  
                echo "

".$this->mysqli->error."

";  
                die();  
            } else {  
            $this->query_num++;  
                return $this->rs;  
            }  
        }  
 
        public function getOne($sql) {  
            $this->query($sql, 1);  
            $this->fetch_mode    = MYSQLI_NUM;  
            $row = $this->fetch();  
            $this->free();  
            return $row[0];  
        }  
 
        public function get_one($sql) {  
            return $this->getOne($sql);  
        }  
 
        public function cache_one($sql) {  
            $sql    = $this->getQuerySql($sql, 1);  
            return $this->get_cache($sql, 'getOne');  
        }  
 
        public function getRow($sql, $fetch_mode = MYSQLI_ASSOC) {  
            $this->query($sql, 1);  
            $this->fetch_mode    = $fetch_mode;  
            $row = $this->fetch();  
            $this->free();  
            return $row;  
        }  
 
        public function get_row($sql, $fetch_mode = MYSQLI_ASSOC) {  
            return $this->getRow($sql); 
        }  
 
        public function cache_row($sql) {  
            $sql    = $this->getQuerySql($sql, 1);  
            return $this->get_cache($sql, 'getRow');  
        }  
 
        public function getAll($sql, $limit = null, $fetch_mode = MYSQLI_ASSOC) {  
            $this->query($sql, $limit);  
            $all_rows = array();  
            $this->fetch_mode    = $fetch_mode;  
            while($rows = $this->fetch()) {  
                $all_rows[] = $rows;  
            }  
            $this->free();  
            return $all_rows;  
        }  
        public function get_all($sql, $limit = null, $fetch_mode = MYSQLI_ASSOC) {  
            return $this->getAll($sql);  
        }  
 
        public function cache_all($sql, $limit = null) {  
            $sql    = $this->getQuerySql($sql, $limit);  
            return $this->get_cache($sql, 'getAll');  
        }  
 
        public function insert_id() {  
            return $this->mysqli->insert_id();  
        }  
 
        public function escape($str) {  
            if(is_array($str)) {  
                foreach($str as $key=>$val) {  
                    $str[$key] = $this->escape($val);  
                }  
            } else {  
                $str = addslashes(trim($str));  
            }  
            return $str;  
        }  
    }  
    //用法  
    $db    = new db_mysqli('localhost', 'root', 111222, 'dict');  
    $db->set_cache_time(10);  
    $db->set_cache_dir('./cache/sql/');  
    $sql = "select * from words order by word_id limit 10,10";  
    $res1 = $db->get_all($sql);  
    $res2 = $db->cache_all($sql);  
 
    echo $db->query_num(),'
';  
    ?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/630729.htmlTechArticle下面来分享一个带缓存数据功能的mysqli类,有需要的同学可看看。 代码如下 复制代码 ?php /** * Mysqli类 * * @author 废墟 * @version v1.0 2009-08-18...

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

2

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

2

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

0

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

29

2025.12.24

yandex外贸入口合集
yandex外贸入口合集

本专题汇总了yandex外贸入口地址,阅读下面的文章了解更多内容。

58

2025.12.24

添加脚注通用方法
添加脚注通用方法

本专题整合了添加脚注方法合集,阅读专题下面的文章了解更多内容。

1

2025.12.24

重启电脑教程汇总
重启电脑教程汇总

本专题整合了重启电脑操作教程,阅读下面的文章了解更多详细教程。

3

2025.12.24

纸张尺寸汇总
纸张尺寸汇总

本专题整合了纸张尺寸相关内容,阅读专题下面的文章了解更多内容。

5

2025.12.24

Java Spring Boot 微服务实战
Java Spring Boot 微服务实战

本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

1

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 5.9万人学习

Git 教程
Git 教程

共21课时 | 2.2万人学习

Django 教程
Django 教程

共28课时 | 2.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号