suchen
Heimphp教程php手册一个带缓存数据功能的mysqli类

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

Jun 13, 2016 am 10:08 AM
mysqliunter分享功能bringen数据habenvon缓存

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

 代码如下 复制代码

 

    /** 
    * 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(),'
';  
    ?>
Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools