キャッシュデータ機能を備えたmysqliクラスを共有して、必要な学生が見てみましょう。
コードは次のとおりです | コードをコピー |
/** */ '.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(),' '; ?> |