亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php adodbzip 類

2024-09-04 11:44:11
字體:
來源:轉載
供稿:網友
  1. <?php 
  2. /** 
  3.  * AdodbZip 1.1 
  4.  *  
  5.  * 作者: 
  6.  * Z(QQ號602000 QQ群5193883) 
  7.  *  
  8.  * 代碼示例: 
  9.  * include_once 'AdodbZip.php'; 
  10.  * $db = AdodbZip::init(NewADOConnection('mysql教程t')); 
  11.  * echo $db->GetOne('SELECT NOW()'); 
  12.  *  
  13.  * 流程說明: 
  14.  * 1. 如果$extract_dir里的Adodb程序文件存在,并且$zip_file不存在;則使用$extract_dir里的Adodb程序文件。 
  15.  * 2. 如果$extract_dir里的Adodb程序文件存在,并且$zip_file存在;則比較修改時間,$extract_dir里的Adodb程序文件更新為較新的。 
  16.  * 3. 如果$extract_dir里的Adodb程序文件不存在,并且$zip_file存在;則$extract_dir里的Adodb程序文件從$zip_file解壓獲得。 
  17.  * 4. 如果 $extract_dir里的Adodb程序文件不存在,并且$zip_file不存在;則從$zip_url下載Adodb的Zip文件,并解壓Adodb的程序文件。 
  18.  * //開源Vevb.com 
  19.  * 其他說明: 
  20.  * 1. $extract_dir可自定義。如果將Adodb的Zip包完全解壓到此目錄,則可忽略$zip_url和$zip_file設置項,這和傳統使用Adodb一樣。 
  21.  * 2. $zip_file可自定義。如果$zip_file存在,則可忽略$zip_url,這樣可整站統一使用$zip_file。 
  22.  * 3. $zip_url可自定義??呻S時修改Adodb版本,此時$zip_file和$extract_dir最好使用默認值,各版本互不干擾。 
  23.  * 4. $server、$user、$pwd、$db可自定義。默認是mysql默認值,此項只有調用AdodbZip::init方法后才起效果。 
  24.  * 5. $charset可自定義。默認不改變編碼,此項只有調用AdodbZip::init方法后才起效果。 
  25.  * 6. AdodbZip::init方法里可增加Adodb初始化值。 
  26.  */ 
  27.  
  28. /** 
  29.  * AdodbZip啟動項 
  30.  */ 
  31. // 設定參數 
  32. AdodbZip::$zip_url = 'http://c.net教程works-kr-1.dl.sourceforge.net/project/adodb/adodb-php5-only/adodb-509-for-php5/adodb509.zip'; //[設置項]Adodb的Zip文件下載地址,文件比較大建議先下載或者解壓 
  33. AdodbZip::$zip_file = sys_get_temp_dir () . preg_replace ( '/^.*/(adodb.*?.zip)$/i''adodb/$1', AdodbZip::$zip_url ); //[設置項]Adodb的Zip文件緩存位置 
  34. AdodbZip::$entry_dir = 'adodb5'
  35. AdodbZip::$extract_dir = sys_get_temp_dir () . 'adodb/' . AdodbZip::$entry_dir//[設置項]Adodb程序文件緩存位置 
  36. AdodbZip::$server = 'localhost'//[設置項]服務器  
  37. AdodbZip::$user = 'root'//[設置項]用戶名 
  38. AdodbZip::$pwd = ''//[設置項]密碼 
  39. AdodbZip::$db = 'test'//[設置項]數據庫教程 
  40. AdodbZip::$charset = ''//[設置項]編碼 
  41.  
  42.  
  43. // 注冊協議 
  44. if (! in_array ( 'AdodbZip', stream_get_wrappers () )) { 
  45.  stream_wrapper_register ( 'AdodbZip''AdodbZip' ); 
  46. // 定義常量 
  47. if (! defined ( 'ADODB_DIR' )) { 
  48.  define ( 'ADODB_DIR''AdodbZip:/' ); 
  49. // 包含程序 
  50. require_once (ADODB_DIR . '/adodb.inc.php'); 
  51. // $db = AdodbZip::init(NewADOConnection('mysqlt')); // [選擇項]引用即定義$db 
  52. // return AdodbZip::init(NewADOConnection('mysqlt')); // [選擇項]引用即返回$db,注意只可引用一次。 
  53.  
  54.  
  55. /** 
  56.  * AdodbZip類定義 
  57.  */ 
  58. class AdodbZip { 
  59.   
  60.  /** 
  61.   * Adodb變量 
  62.   */ 
  63.  public static $zip_url
  64.  public static $zip_file
  65.  public static $entry_dir
  66.  public static $extract_dir
  67.  public static $server
  68.  public static $user
  69.  public static $pwd
  70.  public static $db
  71.  public static $charset
  72.   
  73.  /** 
  74.   * Stream變量 
  75.   */ 
  76.  private $handle
  77.  public $context
  78.   
  79.  /** 
  80.   * Adodb函數組 
  81.   */ 
  82.   
  83.  /** 
  84.   * init 
  85.   * @param adodb &$adodb 
  86.   * @return adodb 
  87.   */ 
  88.  public static function init(&$adodb) { 
  89.   $adodb->Connect ( self::$server, self::$user, self::$pwd, self::$db ); 
  90.   if(self::$charset!=''){ 
  91.    $adodb->Execute('SET NAMES '.self::$charset.';'); 
  92.   } 
  93.   return $adodb
  94.  } 
  95.   
  96.  /** 
  97.   * Stream函數組 
  98.   */ 
  99.   
  100.  /** 
  101.   * __construct 
  102.   */ 
  103.  public function __construct() { 
  104.  } 
  105.   
  106.  /** 
  107.   * stream_cast 
  108.   * @param int $cast_as 
  109.   * @return resource 
  110.   */ 
  111.  public function stream_cast($cast_as) { 
  112.   return false; 
  113.  } 
  114.   
  115.  /** 
  116.   * stream_close 
  117.   */ 
  118.  public function stream_close() { 
  119.   fclose ( $this->handle ); 
  120.  } 
  121.   
  122.  /** 
  123.   * stream_eof 
  124.   * @return bool 
  125.   */ 
  126.  public function stream_eof() { 
  127.   return feof ( $this->handle ); 
  128.  } 
  129.   
  130.  /** 
  131.   * stream_flush 
  132.   * @return bool 
  133.   */ 
  134.  public function stream_flush() { 
  135.   return fflush ( $this->handle ); 
  136.  } 
  137.   
  138.  /** 
  139.   * stream_lock 
  140.   * @param mode $options 
  141.   * @return bool 
  142.   */ 
  143.  public function stream_lock($options) { 
  144.   return flock ( $this->handle, $options ); 
  145.  } 
  146.   
  147.  /** 
  148.   * stream_open 
  149.   * @param string $path 
  150.   * @param string $mode 
  151.   * @param int $options 
  152.   * @param string &$opend_path 
  153.   * @return bool 
  154.   */ 
  155.  public function stream_open($path$mode$options, &$opend_path) { 
  156.   // 驗證文件地址 
  157.   if (! preg_match ( '/^.*?://(.*)$/'$path$matches )) { 
  158.    return false; 
  159.   } 
  160.   $tmp_file = self::$extract_dir . DIRECTORY_SEPARATOR . $matches [1]; 
  161.   $entry_file = self::$entry_dir . '/' . str_replace ( '/', '/', $matches [1] ); 
  162.   $zip_file = self::$zip_file
  163.   // 驗證程序文件 
  164.   if (! file_exists ( $tmp_file ) || file_exists ( $zip_file ) && filectime ( $tmp_file ) < filectime ( $zip_file )) { 
  165.    // 下載文件 
  166.    if (! file_exists ( $zip_file )) { 
  167.     // 目錄處理 
  168.     if (! is_dir ( dirname ( self::$zip_file ) )) { 
  169.      if (mkdir ( dirname ( self::$zip_file ), 0777, true ) === false) { 
  170.       header ( 'Content-type: text/html;charset=utf-8' ); 
  171.       die ( '請創建目錄 ' . $zip_dir ); 
  172.      } 
  173.     } 
  174.     // 下載文件 
  175.     if (! file_exists ( self::$zip_file )) { 
  176.      $break = true; 
  177.      do { 
  178.       $url_arr = parse_url ( self::$zip_url ); 
  179.       $fp = fsockopen ( $url_arr ['host'], isset ( $url_arr ['port'] ) ? ( int ) $url_arr ['port'] : 80, $errno$errstr, 10 ); 
  180.       if ($fp === false) { 
  181.        break
  182.       } 
  183.       $out = "GET " . $url_arr ['path'] . " HTTP/1.0rnHost: " . $url_arr ['host'] . " rnConnection: closernrn"
  184.       fputs ( $fp$out ); 
  185.       if (feof ( $fp )) { 
  186.        break
  187.       } 
  188.       $buffer = fgets ( $fp, 1024 ); 
  189.       if (! preg_match ( '/^HTTP/1.d 200 /i'$buffer )) { 
  190.        break
  191.       } 
  192.       $content_length = false; 
  193.       $content_start = false; 
  194.       while ( ! feof ( $fp ) ) { 
  195.        $buffer = fgets ( $fp, 1024 ); 
  196.        if ($buffer === "rn") { 
  197.         $content_start = true; 
  198.         break
  199.        } 
  200.        if (preg_match ( '/^Content-Length:s*(d+)/i'$buffer$matches )) { 
  201.         $content_length = ( int ) $matches [1]; 
  202.        } 
  203.       } 
  204.       if ($content_length === false || $content_start === false) { 
  205.        break
  206.       } 
  207.       $content = stream_get_contents ( $fp ); 
  208.       if ($content === false) { 
  209.        break
  210.       } 
  211.       $result = file_put_contents ( self::$zip_file$content ); 
  212.       unset ( $content ); 
  213.       if ($result === false) { 
  214.        break
  215.       } 
  216.       fclose ( $fp ); 
  217.      } while ( $break = false ); 
  218.      if ($break) { 
  219.       header ( 'Content-type: text/html;charset=utf-8' ); 
  220.       die ( '請下載文件 <a href="' . self::$zip_url . '">' . self::$zip_url . '.zip</a > 保存為 ' . self::$zip_file ); 
  221.      } 
  222.     } 
  223.    } 
  224.    // 創建目錄 
  225.    $tmp_dir = dirname ( $tmp_file ); 
  226.    if (! is_dir ( $tmp_dir )) { 
  227.     if (mkdir ( $tmp_dir, 0777, true ) === false) { 
  228.      header ( 'Content-type: text/html;charset=utf-8' ); 
  229.      die ( '請創建目錄 ' . $tmp_dir ); 
  230.     } 
  231.    } 
  232.    // 打開壓縮文件 
  233.    $zip = zip_open ( $zip_file ); 
  234.    if (! is_resource ( $zip )) { 
  235.     return false; 
  236.    } 
  237.    // 尋找解壓文件 
  238.    do { 
  239.     $entry = zip_read ( $zip ); 
  240.     if (! is_resource ( $entry )) { 
  241.      return false; 
  242.     } 
  243.     if (zip_entry_name ( $entry ) == $entry_file) { 
  244.      break
  245.     } 
  246.    } while ( true ); 
  247.    // 轉存壓縮文件 
  248.    zip_entry_open ( $zip$entry ); 
  249.    file_put_contents ( $tmp_file, zip_entry_read ( $entry, zip_entry_filesize ( $entry ) ) ); 
  250.    zip_entry_close ( $entry ); 
  251.    zip_close ( $zip ); 
  252.   } 
  253.   // 打開文件 
  254.   $this->handle = fopen ( $tmp_file$mode ); 
  255.   if (! is_resource ( $this->handle )) { 
  256.    return false; 
  257.   } 
  258.   return true; 
  259.  } 
  260.   
  261.  /** 
  262.   * stream_read 
  263.   * @param int $count 
  264.   * @return string 
  265.   */ 
  266.  public function stream_read($count) { 
  267.   return fread ( $this->handle, $count ); 
  268.  } 
  269.   
  270.  /** 
  271.   * stream_seek 
  272.   * @param int $offset 
  273.   * @param int $whence=SEEK_SET 
  274.   * @return bool 
  275.   */ 
  276.  public function stream_seek($offset$whence = SEEK_SET) { 
  277.   return fseek ( $this->handle, $offset$whence ); 
  278.  } 
  279.   
  280.  /** 
  281.   * stream_set_option 
  282.   * @param int $option 
  283.   * @param int $arg1 
  284.   * @param int $arg2 
  285.   * @return bool 
  286.   */ 
  287.  public function stream_set_option($option$arg1$arg2) { 
  288.   return false; 
  289.  } 
  290.   
  291.  /** 
  292.   * stream_stat 
  293.   * @return array 
  294.   */ 
  295.  public function stream_stat() { 
  296.   return fstat ( $this->handle ); 
  297.  } 
  298.   
  299.  /** 
  300.   * stream_tell 
  301.   * @return int 
  302.   */ 
  303.  public function stream_tell() { 
  304.   return ftell ( $this->handle ); 
  305.  } 
  306.   
  307.  /** 
  308.   * stream_write 
  309.   * @param string $data 
  310.   * @return int 
  311.   */ 
  312.  public function stream_write($data) { 
  313.   return fwrite ( $this->handle, $data ); 
  314.  } 
  315.   
  316.  /** 
  317.   * url_stat 
  318.   * @param string $path 
  319.   * @param int $flag 
  320.   * @return array 
  321.   */ 
  322.  public function url_stat($path$flag) { 
  323.   if (! preg_match ( '/^.*?://(.*)$/'$path$matches )) { 
  324.    return false; 
  325.   } 
  326.   $tmp_file = self::$extract_dir . DIRECTORY_SEPARATOR . $matches [1]; 
  327.   if (file_exists ( $tmp_file )) { 
  328.    if ($flag & STREAM_URL_STAT_LINK) { 
  329.     return lstat ( $tmp_file ); 
  330.    } else { 
  331.     return stat ( $tmp_file ); 
  332.    } 
  333.   } 
  334.   if ($flag & STREAM_URL_STAT_QUIET) { 
  335.    $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 ); 
  336.    return array_merge ( array_values ( $arr ), $arr ); 
  337.   } 
  338.   return false; 
  339.  } 
  340. ?> 

使用實例代碼如下:

  1. <?php 
  2.  include_once 'AdodbZip.php';  
  3.  $db = AdodbZip::init(NewADOConnection('mysqlt'));  
  4.  echo $db->GetOne('SELECT NOW()');  
  5.  ?>  

也是兩步.

1. 包含AdodbZip.php文件

2. AdodbZip::init(...)函數對adodb連接類進行初始化

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美亚洲国产日韩2020| 国产福利精品av综合导导航| 操人视频在线观看欧美| 亚洲在线视频福利| 超碰97人人做人人爱少妇| 国产精品免费网站| 亚洲欧美www| 久久久久久久色| 国产亚洲一区精品| 久久精品亚洲一区| 国产美女被下药99| 亚洲一区二区日本| 亚洲国产精品嫩草影院久久| 欧美日韩性生活视频| 国产精品久久久久久久久| 在线视频免费一区二区| 欧美另类极品videosbest最新版本| 97av在线视频免费播放| 永久免费毛片在线播放不卡| 亚洲国产美女精品久久久久∴| 黑人巨大精品欧美一区二区| 亚洲精品白浆高清久久久久久| 91在线直播亚洲| 亚洲福利在线看| 日韩经典中文字幕在线观看| 中文字幕日韩有码| 成人激情视频小说免费下载| 欧美精品18videos性欧| 亚洲成年网站在线观看| 91成人天堂久久成人| 国产欧美精品在线| 91精品综合久久久久久五月天| 国产精品国模在线| 亚洲欧美中文字幕在线一区| 成人在线视频福利| 亚洲国产精品久久久久秋霞蜜臀| 成人综合网网址| 国产在线日韩在线| 中文字幕日韩专区| 91精品国产亚洲| 亚洲在线视频福利| 久久久久久久久久国产| 国产亚洲欧美日韩美女| 91亚洲国产成人精品性色| 国产69精品久久久久9999| 成人黄色午夜影院| 欧美成在线视频| 日韩免费黄色av| 亚洲欧美日韩在线一区| 欧美激情视频三区| 97香蕉久久超级碰碰高清版| 亚洲黄色av网站| 一本色道久久88综合日韩精品| 亚洲第一男人天堂| 91在线视频九色| 国产欧美一区二区三区四区| 亚洲色图五月天| 国产精品久久久久久久av电影| 亚洲第一综合天堂另类专| 亚洲的天堂在线中文字幕| 亚洲已满18点击进入在线看片| 精品色蜜蜜精品视频在线观看| 日韩在线播放一区| 久久久精品一区二区| 亚洲精品有码在线| 日本精品一区二区三区在线播放视频| 日本免费在线精品| 亚洲福利视频在线| 欧美日韩成人黄色| 久久这里只有精品99| 精品动漫一区二区| 成人乱人伦精品视频在线观看| 亚洲视频一区二区三区| 精品国偷自产在线视频99| 久久久久久久电影一区| 国产精品极品美女粉嫩高清在线| 91av在线免费观看视频| 亚洲精品成人免费| 91亚洲va在线va天堂va国| 亚洲欧美日韩国产中文专区| 国产一区二区三区在线视频| 国产盗摄xxxx视频xxx69| 伊人久久综合97精品| 久久综合国产精品台湾中文娱乐网| 亚洲一区二区三区在线免费观看| 中文字幕在线国产精品| 97在线免费观看视频| 51久久精品夜色国产麻豆| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲精品国产精品国产自| 亚洲综合中文字幕在线观看| 午夜精品久久久久久久99热浪潮| 狠狠综合久久av一区二区小说| 国产成人精品免高潮费视频| 色噜噜国产精品视频一区二区| 亚洲一区二区三区xxx视频| 亚洲欧美一区二区三区四区| 性视频1819p久久| 国产精品wwww| 欧美成人免费在线视频| 九九久久久久久久久激情| 亚洲电影免费观看高清| 日韩精品在线观看一区| 亚洲午夜久久久影院| 欧美最猛黑人xxxx黑人猛叫黄| 日韩欧美在线免费| 欧美视频在线看| 91精品国产沙发| 中文字幕亚洲无线码a| 久久久免费观看| 亚洲男女自偷自拍图片另类| 成人淫片在线看| 欧美电影免费观看电视剧大全| 亚洲最新在线视频| 亚洲天堂免费观看| 亚洲在线视频福利| 日韩精品在线免费| 国产亚洲精品日韩| 欧美性xxxxx极品| 久久不射电影网| 国产精品第100页| 久久免费视频在线| 欧美性xxxxx极品| 国产精品视频免费在线| 亚洲欧美日韩一区二区在线| 亚洲а∨天堂久久精品喷水| 在线日韩日本国产亚洲| www.久久久久久.com| 久久久久在线观看| 欧美老女人xx| 亚洲免费伊人电影在线观看av| 欧美激情在线狂野欧美精品| 66m—66摸成人免费视频| 国产精品久久一区主播| 国产裸体写真av一区二区| 久久在线免费视频| 精品美女国产在线| 亚洲成av人乱码色午夜| 日韩精品免费观看| 精品国产视频在线| 国产精品18久久久久久麻辣| 亚洲欧洲av一区二区| 尤物99国产成人精品视频| 亚洲第一页在线| 日韩国产高清视频在线| 亚洲一区二区精品| 日韩大陆毛片av| 国模精品一区二区三区色天香| 欧美日韩国产色视频| 91在线国产电影| 菠萝蜜影院一区二区免费| 国产啪精品视频网站| 欧美日韩国产一区在线| 97香蕉超级碰碰久久免费的优势| 91香蕉电影院| 国产精品福利在线观看网址| 亚洲福利在线播放| 亚洲国产精品久久久久秋霞不卡| 国产日韩在线看片| 91欧美精品午夜性色福利在线| 热久久视久久精品18亚洲精品| 亚洲精品永久免费| 亚洲free性xxxx护士hd| 欧美伊久线香蕉线新在线|