好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php缓存数据功能的mysqli类 - php类库

php缓存数据功能的mysqli类

<?php          /**         * 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   '<h2>' .mysqli_connect_error(). '</h2>' ;                      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   "<h2>" . $this ->mysqli->error. "</h2>" ;                      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 ));                 }    //开源代码phpfensi测试数据                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(), '<br>' ;         ?>

查看更多关于php缓存数据功能的mysqli类 - php类库的详细内容...

  阅读:44次