国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > PHP > 正文

php中adodbzip類(lèi)實(shí)例

2024-05-04 23:28:44
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了php中adodbzip類(lèi),以實(shí)例形式詳細(xì)講述了adodbzip類(lèi)文件的實(shí)現(xiàn)方法與使用技巧,注釋中包含詳盡的功能說(shuō)明,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
 
 

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

 

復(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可自定義。可隨時(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)]用戶(hù)名 
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類(lèi)定義 
 */ 
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連接類(lèi)進(jìn)行初始化

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


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 临潭县| 金堂县| 三门峡市| 汶川县| 出国| 高要市| 商城县| 玉门市| 湘阴县| 鄯善县| 固原市| 建平县| 岳阳市| 内黄县| 贵阳市| 宜君县| 德钦县| 遵义县| 英山县| 平度市| 泽州县| 博白县| 铁岭市| 襄汾县| 沙雅县| 慈溪市| 开江县| 盖州市| 尼木县| 嵩明县| 阜康市| 通渭县| 西充县| 兴文县| 滨海县| 长治市| 淳化县| 宿迁市| 三门县| 玉林市| 武乡县|