php专区

 首页 > php专区 > PHP应用 > php类库 > php adodbzip 类 - php类库

php adodbzip 类 - php类库

分享到:
【字体:
导读:
          ?php/***AdodbZip1.1**作者:*Z(QQ号602000QQ群5193883)**代码示例:*include_once#39;AdodbZip.php#39;;*$db=AdodbZip::init(NewADOCon......

php adodbzip 类

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

使用实例代码如下:

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

也是两步.

1. 包含AdodbZip.php文件

2. AdodbZip::init(...)函数对adodb连接类进行初始化

分享到:
php给图片加水印与上传图片加水印php类 -...
php给图片加水印与上传图片加水印php类 /*   * 功能:PHP图片水印 (水印支持图片或文字)   * 参数:   * $groundImage 背景图片,即需要加水印的图片,暂只支持GIF,JPG,PNG格式;   * $waterPos 水印位置,有10种状态,0为随机位置;   * 1为顶端居左,2为顶...
完美php文章分页类 - php类库
完美php文章分页类 class SubPages{   private   $each_disNums;//每页显示的条目数   private   $nums;//总条目数   private   $current_page;//当前被选中的页   private   $sub_pages;//每次显示的页数   private   $pageNums;//总页数   pri...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……