欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php中adodbzip類實(shí)例

 更新時(shí)間:2014年12月08日 12:13:40   投稿:shichen2014  
這篇文章主要介紹了php中adodbzip類,以實(shí)例形式詳細(xì)講述了adodbzip類文件的實(shí)現(xiàn)方法與使用技巧,注釋中包含詳盡的功能說(shuō)明,非常具有實(shí)用價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了php中adodbzip類程序代碼。分享給大家供大家參考。具體如下:

復(fù)制代碼 代碼如下:
<?php
/**
 * AdodbZip 1.1
 * 
 * 代碼示例:
 * include_once 'AdodbZip.php';
 * $db = AdodbZip::init(NewADOConnection('mysql教程t'));
 * echo $db->GetOne('SELECT NOW()');
 * 
 * 流程說(shuō)明:
 * 1. 如果$extract_dir里的Adodb程序文件存在,并且$zip_file不存在;則使用$extract_dir里的Adodb程序文件。
 * 2. 如果$extract_dir里的Adodb程序文件存在,并且$zip_file存在;則比較修改時(shí)間,$extract_dir里的Adodb程序文件更新為較新的。
 * 3. 如果$extract_dir里的Adodb程序文件不存在,并且$zip_file存在;則$extract_dir里的Adodb程序文件從$zip_file解壓獲得。
 * 4. 如果 $extract_dir里的Adodb程序文件不存在,并且$zip_file不存在;則從$zip_url下載Adodb的Zip文件,并解壓Adodb的程序文件。
 * 其他說(shuō)明:
 * 1. $extract_dir可自定義。如果將Adodb的Zip包完全解壓到此目錄,則可忽略$zip_url和$zip_file設(shè)置項(xiàng),這和傳統(tǒng)使用Adodb一樣。
 * 2. $zip_file可自定義。如果$zip_file存在,則可忽略$zip_url,這樣可整站統(tǒng)一使用$zip_file。
 * 3. $zip_url可自定義??呻S時(shí)修改Adodb版本,此時(shí)$zip_file和$extract_dir最好使用默認(rèn)值,各版本互不干擾。
 * 4. $server、$user、$pwd、$db可自定義。默認(rèn)是mysql默認(rèn)值,此項(xiàng)只有調(diào)用AdodbZip::init方法后才起效果。
 * 5. $charset可自定義。默認(rèn)不改變編碼,此項(xiàng)只有調(diào)用AdodbZip::init方法后才起效果。
 * 6. AdodbZip::init方法里可增加Adodb初始化值。
 */
 
/**
 * AdodbZip啟動(dòng)項(xiàng)
 */
// 設(shè)定參數(shù)
AdodbZip::$zip_url = 'http://c.net教程works-kr-1.dl.sourceforge.net/project/adodb/adodb-php5-only/adodb-509-for-php5/adodb509.zip'; //[設(shè)置項(xiàng)]Adodb的Zip文件下載地址,文件比較大建議先下載或者解壓
AdodbZip::$zip_file = sys_get_temp_dir () . preg_replace ( '/^.*/(adodb.*?.zip)$/i', 'adodb/$1', AdodbZip::$zip_url ); //[設(shè)置項(xiàng)]Adodb的Zip文件緩存位置
AdodbZip::$entry_dir = 'adodb5';
AdodbZip::$extract_dir = sys_get_temp_dir () . 'adodb/' . AdodbZip::$entry_dir; //[設(shè)置項(xiàng)]Adodb程序文件緩存位置
AdodbZip::$server = 'localhost'; //[設(shè)置項(xiàng)]服務(wù)器 
AdodbZip::$user = 'root'; //[設(shè)置項(xiàng)]用戶名
AdodbZip::$pwd = ''; //[設(shè)置項(xiàng)]密碼
AdodbZip::$db = 'test'; //[設(shè)置項(xiàng)]數(shù)據(jù)庫(kù)教程
AdodbZip::$charset = ''; //[設(shè)置項(xiàng)]編碼
 
// 注冊(cè)協(xié)議
if (! in_array ( 'AdodbZip', stream_get_wrappers () )) {
 stream_wrapper_register ( 'AdodbZip', 'AdodbZip' );
}
// 定義常量
if (! defined ( 'ADODB_DIR' )) {
 define ( 'ADODB_DIR', 'AdodbZip:/' );
}
// 包含程序
require_once (ADODB_DIR . '/adodb.inc.php');
// $db = AdodbZip::init(NewADOConnection('mysqlt')); // [選擇項(xiàng)]引用即定義$db
// return AdodbZip::init(NewADOConnection('mysqlt')); // [選擇項(xiàng)]引用即返回$db,注意只可引用一次。
 
/**
 * AdodbZip類定義
 */
class AdodbZip {
 
 /**
  * Adodb變量
  */
 public static $zip_url;
 public static $zip_file;
 public static $entry_dir;
 public static $extract_dir;
 public static $server;
 public static $user;
 public static $pwd;
 public static $db;
 public static $charset;
 
 /**
  * Stream變量
  */
 private $handle;
 public $context;
 
 /**
  * Adodb函數(shù)組
  */
 
 /**
  * init
  * @param adodb &$adodb
  * @return adodb
  */
 public static function init(&$adodb) {
  $adodb->Connect ( self::$server, self::$user, self::$pwd, self::$db );
  if(self::$charset!=''){
   $adodb->Execute('SET NAMES '.self::$charset.';');
  }
  return $adodb;
 }
 
 /**
  * Stream函數(shù)組
  */
 
 /**
  * __construct
  */
 public function __construct() {
 }
 
 /**
  * stream_cast
  * @param int $cast_as
  * @return resource
  */
 public function stream_cast($cast_as) {
  return false;
 }
 
 /**
  * stream_close
  */
 public function stream_close() {
  fclose ( $this->handle );
 }
 
 /**
  * stream_eof
  * @return bool
  */
 public function stream_eof() {
  return feof ( $this->handle );
 }
 
 /**
  * stream_flush
  * @return bool
  */
 public function stream_flush() {
  return fflush ( $this->handle );
 }
 
 /**
  * stream_lock
  * @param mode $options
  * @return bool
  */
 public function stream_lock($options) {
  return flock ( $this->handle, $options );
 }
 
 /**
  * stream_open
  * @param string $path
  * @param string $mode
  * @param int $options
  * @param string &$opend_path
  * @return bool
  */
 public function stream_open($path, $mode, $options, &$opend_path) {
  // 驗(yàn)證文件地址
  if (! preg_match ( '/^.*?://(.*)$/', $path, $matches )) {
   return false;
  }
  $tmp_file = self::$extract_dir . DIRECTORY_SEPARATOR . $matches [1];
  $entry_file = self::$entry_dir . '/' . str_replace ( '\', '/', $matches [1] );
  $zip_file = self::$zip_file;
  // 驗(yàn)證程序文件
  if (! file_exists ( $tmp_file ) || file_exists ( $zip_file ) && filectime ( $tmp_file ) < filectime ( $zip_file )) {
   // 下載文件
   if (! file_exists ( $zip_file )) {
    // 目錄處理
    if (! is_dir ( dirname ( self::$zip_file ) )) {
     if (mkdir ( dirname ( self::$zip_file ), 0777, true ) === false) {
      header ( 'Content-type: text/html;charset=utf-8' );
      die ( '請(qǐng)創(chuàng)建目錄 ' . $zip_dir );
     }
    }
    // 下載文件
    if (! file_exists ( self::$zip_file )) {
     $break = true;
     do {
      $url_arr = parse_url ( self::$zip_url );
      $fp = fsockopen ( $url_arr ['host'], isset ( $url_arr ['port'] ) ? ( int ) $url_arr ['port'] : 80, $errno, $errstr, 10 );
      if ($fp === false) {
       break;
      }
      $out = "GET " . $url_arr ['path'] . " HTTP/1.0rnHost: " . $url_arr ['host'] . " rnConnection: closernrn";
      fputs ( $fp, $out );
      if (feof ( $fp )) {
       break;
      }
      $buffer = fgets ( $fp, 1024 );
      if (! preg_match ( '/^HTTP/1.d 200 /i', $buffer )) {
       break;
      }
      $content_length = false;
      $content_start = false;
      while ( ! feof ( $fp ) ) {
       $buffer = fgets ( $fp, 1024 );
       if ($buffer === "rn") {
        $content_start = true;
        break;
       }
       if (preg_match ( '/^Content-Length:s*(d+)/i', $buffer, $matches )) {
        $content_length = ( int ) $matches [1];
       }
      }
      if ($content_length === false || $content_start === false) {
       break;
      }
      $content = stream_get_contents ( $fp );
      if ($content === false) {
       break;
      }
      $result = file_put_contents ( self::$zip_file, $content );
      unset ( $content );
      if ($result === false) {
       break;
      }
      fclose ( $fp );
     } while ( $break = false );
     if ($break) {
      header ( 'Content-type: text/html;charset=utf-8' );
      die ( '請(qǐng)下載文件 <a href="' . self::$zip_url . '">' . self::$zip_url . '.zip</a > 保存為 ' . self::$zip_file );
     }
    }
   }
   // 創(chuàng)建目錄
   $tmp_dir = dirname ( $tmp_file );
   if (! is_dir ( $tmp_dir )) {
    if (mkdir ( $tmp_dir, 0777, true ) === false) {
     header ( 'Content-type: text/html;charset=utf-8' );
     die ( '請(qǐng)創(chuàng)建目錄 ' . $tmp_dir );
    }
   }
   // 打開(kāi)壓縮文件
   $zip = zip_open ( $zip_file );
   if (! is_resource ( $zip )) {
    return false;
   }
   // 尋找解壓文件
   do {
    $entry = zip_read ( $zip );
    if (! is_resource ( $entry )) {
     return false;
    }
    if (zip_entry_name ( $entry ) == $entry_file) {
     break;
    }
   } while ( true );
   // 轉(zhuǎn)存壓縮文件
   zip_entry_open ( $zip, $entry );
   file_put_contents ( $tmp_file, zip_entry_read ( $entry, zip_entry_filesize ( $entry ) ) );
   zip_entry_close ( $entry );
   zip_close ( $zip );
  }
  // 打開(kāi)文件
  $this->handle = fopen ( $tmp_file, $mode );
  if (! is_resource ( $this->handle )) {
   return false;
  }
  return true;
 }
 
 /**
  * stream_read
  * @param int $count
  * @return string
  */
 public function stream_read($count) {
  return fread ( $this->handle, $count );
 }
 
 /**
  * stream_seek
  * @param int $offset
  * @param int $whence=SEEK_SET
  * @return bool
  */
 public function stream_seek($offset, $whence = SEEK_SET) {
  return fseek ( $this->handle, $offset, $whence );
 }
 
 /**
  * stream_set_option
  * @param int $option
  * @param int $arg1
  * @param int $arg2
  * @return bool
  */
 public function stream_set_option($option, $arg1, $arg2) {
  return false;
 }
 
 /**
  * stream_stat
  * @return array
  */
 public function stream_stat() {
  return fstat ( $this->handle );
 }
 
 /**
  * stream_tell
  * @return int
  */
 public function stream_tell() {
  return ftell ( $this->handle );
 }
 
 /**
  * stream_write
  * @param string $data
  * @return int
  */
 public function stream_write($data) {
  return fwrite ( $this->handle, $data );
 }
 
 /**
  * url_stat
  * @param string $path
  * @param int $flag
  * @return array
  */
 public function url_stat($path, $flag) {
  if (! preg_match ( '/^.*?://(.*)$/', $path, $matches )) {
   return false;
  }
  $tmp_file = self::$extract_dir . DIRECTORY_SEPARATOR . $matches [1];
  if (file_exists ( $tmp_file )) {
   if ($flag & STREAM_URL_STAT_LINK) {
    return lstat ( $tmp_file );
   } else {
    return stat ( $tmp_file );
   }
  }
  if ($flag & STREAM_URL_STAT_QUIET) {
   $arr = array ('dev' => 0, 'ino' => 0, 'mode' => 0, 'nlink' => 0, 'uid' => 0, 'gid' => 0, 'rdev' => 0, 'size' => 0, 'atime' => 0, 'mtime' => 0, 'ctime' => 0, 'blksize' => 0, 'blocks' => 0 );
   return array_merge ( array_values ( $arr ), $arr );
  }
  return false;
 }
}
?>

使用實(shí)例代碼如下:
復(fù)制代碼 代碼如下:
<?php
 include_once 'AdodbZip.php'; 
 $db = AdodbZip::init(NewADOConnection('mysqlt')); 
 echo $db->GetOne('SELECT NOW()'); 
 ?>

也是兩步.

1. 包含AdodbZip.php文件

2. AdodbZip::init(...)函數(shù)對(duì)adodb連接類進(jìn)行初始化

希望本文所述對(duì)大家的PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • PHP實(shí)現(xiàn)分布式memcache設(shè)置web集群session同步的方法

    PHP實(shí)現(xiàn)分布式memcache設(shè)置web集群session同步的方法

    這篇文章主要介紹了PHP實(shí)現(xiàn)分布式memcache設(shè)置web集群session同步的方法,結(jié)合實(shí)例形式分析了php設(shè)置與使用memcache實(shí)現(xiàn)web集群session同步的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-04-04
  • php二維碼生成

    php二維碼生成

    在二維碼越來(lái)越普及之際。我們需要了解一下什么是二維碼,作為了一個(gè)php programer,我們更需要知道如何使用 php生成二維碼。廢話少說(shuō),下面說(shuō)正題。
    2015-10-10
  • PHP排序算法之基數(shù)排序(Radix Sort)實(shí)例詳解

    PHP排序算法之基數(shù)排序(Radix Sort)實(shí)例詳解

    這篇文章主要介紹了PHP排序算法之基數(shù)排序(Radix Sort),結(jié)合實(shí)例形式詳細(xì)分析了php基數(shù)排序算法的原理、實(shí)現(xiàn)方法與相關(guān)使用技巧,需要的朋友可以參考下
    2018-04-04
  • php獲取圖片信息的方法詳解

    php獲取圖片信息的方法詳解

    這篇文章主要介紹了php獲取圖片信息的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了php獲取圖片信息的相關(guān)函數(shù)及用法,并給出了通過(guò)自定義函數(shù)實(shí)現(xiàn)獲取圖片信息的方法演示,需要的朋友可以參考下
    2015-12-12
  • 緩存技術(shù)詳談—php

    緩存技術(shù)詳談—php

    緩存技術(shù)詳談—php...
    2006-12-12
  • PHP基于反射機(jī)制實(shí)現(xiàn)插件的可插拔設(shè)計(jì)詳解

    PHP基于反射機(jī)制實(shí)現(xiàn)插件的可插拔設(shè)計(jì)詳解

    這篇文章主要介紹了PHP基于反射機(jī)制實(shí)現(xiàn)插件的可插拔設(shè)計(jì),結(jié)合實(shí)例形式較為詳細(xì)的分析了插件的功能、反射機(jī)制原理與實(shí)現(xiàn)可插拔設(shè)計(jì)的操作步驟,需要的朋友可以參考下
    2016-11-11
  • PHP7.1方括號(hào)數(shù)組符號(hào)多值復(fù)制及指定鍵值賦值用法分析

    PHP7.1方括號(hào)數(shù)組符號(hào)多值復(fù)制及指定鍵值賦值用法分析

    這篇文章主要介紹了PHP7.1方括號(hào)數(shù)組符號(hào)多值復(fù)制及指定鍵值賦值用法,結(jié)合實(shí)例形式對(duì)比分析了php7數(shù)組復(fù)制與賦值的新特性與操作技巧,需要的朋友可以參考下
    2016-09-09
  • gearman管理工具GearmanManager的安裝與php使用方法示例

    gearman管理工具GearmanManager的安裝與php使用方法示例

    這篇文章主要介紹了gearman管理工具GearmanManager的安裝與php使用方法,結(jié)合實(shí)例形式詳細(xì)分析了gearman管理工具GearmanManager的安裝及php使用GearmanManager相關(guān)配置與操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • PHP基于雙向鏈表與排序操作實(shí)現(xiàn)的會(huì)員排名功能示例

    PHP基于雙向鏈表與排序操作實(shí)現(xiàn)的會(huì)員排名功能示例

    這篇文章主要介紹了PHP基于雙向鏈表與排序操作實(shí)現(xiàn)的會(huì)員排名功能,結(jié)合實(shí)例形式分析了php雙向鏈表的功能、定義及基于雙向鏈表的排序操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-12-12
  • PHP工廠模式簡(jiǎn)單實(shí)現(xiàn)方法示例

    PHP工廠模式簡(jiǎn)單實(shí)現(xiàn)方法示例

    這篇文章主要介紹了PHP工廠模式簡(jiǎn)單實(shí)現(xiàn)方法,簡(jiǎn)單說(shuō)明了工廠模式的概念、原理并結(jié)合實(shí)例形式分析了php實(shí)現(xiàn)工廠模式的相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05

最新評(píng)論