您好,欢迎访问一九零五行业门户网

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

下面来分享一个带缓存数据功能的mysqli类,有需要的同学可看看。
 代码如下 复制代码
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(),'
';  
    ?>
http://www.bkjia.com/phpjc/630729.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/630729.htmltecharticle下面来分享一个带缓存数据功能的mysqli类,有需要的同学可看看。 代码如下 复制代码 ?php /** * mysqli类 * * @author 废墟 * @version v1.0 2009-08-18...
其它类似信息

推荐信息