キャッシュデータ関数を使用した mysqli クラス_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:05:55
オリジナル
976 人が閲覧しました

キャッシュデータ機能を備えたmysqliクラスを共有して、必要な学生が見てみましょう。

コードは次のとおりです コードをコピー

/**
* Mysqli クラス
* *
* @作者廃墟
* @バージョン v1.0 2009-08-18

*/
    クラス db_mysqli {
        $mysqli を保護しました。  
        保護された $sql;  
        $rs を保護しました。  
        保護された $query_num = 0;  
        protected $fetch_mode = MYSQLI_ASSOC;  
        protected $cache_dir = './cache/';  
        保護された $cache_time = 1800;  
 
        パブリック関数 __construct($dbhost, $dbuser, $dbpass, $dbname) {
            $this->mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);  
            if(mysqli_connect_errno()) {
                $this->mysqli = false;  
                echo '

'.mysqli_connect_error().'

';  
                死ぬ();  
            } その他 {
                $this->mysqli->set_charset("utf8");  
            }
        }
 
        パブリック関数 __destruct() {
            $this->free();  
            $this->close();  
        }
 
        保護された関数 free() {
            @$this->rs->free();  
        }
 
        保護された関数 close() {
            $this->mysqli->close();  
        }
 
        保護された関数 fetch() {
            return $this->rs->fetch_array($this->fetch_mode);  
        }
 
        保護された関数 getQuerySql($sql, $limit = null) {
            if (@preg_match("/[0-9]+(,[ ]?[0-9]+)?/is", $limit) && !preg_match("/ LIMIT [0-9]+(,[ ] ?[0-9]+)?$/is", $sql)) {
                $sql .= "制限" . $limit;  
            }
            $sql を返します。  
        }
 
        保護された関数 get_cache($sql,$method) {
            include_once './cache.php';//若框架中使用__autoload(),此処可以不用加文ダウンロード件
            $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);  
            }
            $res を返します。  
        }
 
        パブリック関数 query_num() {
            $this->query_num を返します;  
        }
 
        パブリック関数 set_cache_dir($cache_dir) {
            $this->cache_dir = $cache_dir;  
        }
 
        パブリック関数 set_cache_time($cache_time) {
            $this->cache_time = $cache_time;  
        }
 
        パブリック関数クエリ($sql, $limit = null) {
            $sql = $this->getQuerySql($sql, $limit);  
            $this->sql = $sql;  
            $this->rs = $this->mysqli->query($sql);  
            if (!$this->rs) {
                echo "

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

";  
                死ぬ();  
            } その他 {
            $this->query_num++;  
                $this->rs; を返す  
            }
        }
 
        パブリック関数 getOne($sql) {
            $this->query($sql, 1);  
            $this->fetch_mode = MYSQLI_NUM;  
            $row = $this->fetch();  
            $this->free();  
            $row[0] を返します;  
        }
 
        パブリック関数 get_one($sql) {
            return $this->getOne($sql);  
        }
 
        パブリック関数cache_one($sql) {
            $sql = $this->getQuerySql($sql, 1);  
            return $this->get_cache($sql, 'getOne');  
        }
 
        パブリック関数 getRow($sql, $fetch_mode = MYSQLI_ASSOC) {
            $this->query($sql, 1);  
            $this->fetch_mode = $fetch_mode;  
            $row = $this->fetch();  
            $this->free();  
            $row を返します。  
        }
 
        パブリック関数 get_row($sql, $fetch_mode = MYSQLI_ASSOC) {
            return $this->getRow($sql); 
        }
 
        パブリック関数cache_row($sql) {
            $sql = $this->getQuerySql($sql, 1);  
            return $this->get_cache($sql, 'getRow');  
        }
 
        パブリック関数 getAll($sql, $limit = null, $fetch_mode = MYSQLI_ASSOC) {
            $this->query($sql, $limit);  
            $all_rows = 配列();  
            $this->fetch_mode = $fetch_mode;  
            while($rows = $this->fetch()) {
                $all_rows[] = $rows;  
            }
            $this->free();  
            $all_rows を返します;  
        }
        パブリック関数 get_all($sql, $limit = null, $fetch_mode = MYSQLI_ASSOC) {
            return $this->getAll($sql);  
        }
 
        パブリック関数cache_all($sql, $limit = null) {
            $sql = $this->getQuerySql($sql, $limit);  
            return $this->get_cache($sql, 'getAll');  
        }
 
        パブリック関数 insert_id() {
            return $this->mysqli->insert_id();  
        }
 
        パブリック関数エスケープ($str) {
            if(is_array($str)) {
                foreach($str as $key=>$val) {
                    $str[$key] = $this->escape($val);  
                }
            } その他 {
                $str = ラッシュを追加します(trim($str));  
            }
            $str を返します。  
        }
    }
    //用法
    $db = new db_mysqli('localhost', 'root', 111222, 'dict');  
    $db->set_cache_time(10);  
$db->set_cache_dir('./cache/sql/'); $sql = "単語 ID 制限 10,10 による単語順から * を選択"; $res1 = $db->get_all($sql); $res2 = $db->cache_all($sql);
echo $db->query_num(),'
'; ?>




http://www.bkjia.com/PHPjc/630729.htmlwww.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/630729.html技術記事キャッシュデータ機能を備えたmysqliクラスを共有してみましょう。必要な学生は参照してください。 コードは以下の通りです コードをコピー ?php /** * Mysqli class * * @author廃墟 * @version v1.0 2009-08-18...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート