本文实例讲述了php中adodbzip类程序代码。分享给大家供大家参考。具体如下:
<?php /** * AdodbZip 1.1 * * 代码示例: * include_once 'AdodbZip.php'; * $db = AdodbZip::init(NewADOConnection('mysql教程t')); * echo $db->GetOne('SELECT NOW()'); * * 流程说明: * 1. 如果$extract_dir里的Adodb程序文件存在,并且$zip_file不存在;则使用$extract_dir里的Adodb程序文件。 * 2. 如果$extract_dir里的Adodb程序文件存在,并且$zip_file存在;则比较修改时间,$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的程序文件。 * 其他说明: * 1. $extract_dir可自定义。如果将Adodb的Zip包完全解压到此目录,则可忽略$zip_url和$zip_file设置项,这和传统使用Adodb一样。 * 2. $zip_file可自定义。如果$zip_file存在,则可忽略$zip_url,这样可整站统一使用$zip_file。 * 3. $zip_url可自定义。可随时修改Adodb版本,此时$zip_file和$extract_dir最好使用默认值,各版本互不干扰。 * 4. $server、$user、$pwd、$db可自定义。默认是mysql默认值,此项只有调用AdodbZip::init方法后才起效果。 * 5. $charset可自定义。默认不改变编码,此项只有调用AdodbZip::init方法后才起效果。 * 6. AdodbZip::init方法里可增加Adodb初始化值。 */ /** * AdodbZip启动项 */ // 设定参数 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文件下载地址,文件比较大建议先下载或者解压 AdodbZip::$zip_file = sys_get_temp_dir () . preg_replace ( '/^.*/(adodb.*?.zip)$/i', 'adodb/$1', AdodbZip::$zip_url ); //[设置项]Adodb的Zip文件缓存位置 AdodbZip::$entry_dir = 'adodb5'; AdodbZip::$extract_dir = sys_get_temp_dir () . 'adodb/' . AdodbZip::$entry_dir; //[设置项]Adodb程序文件缓存位置 AdodbZip::$server = 'localhost'; //[设置项]服务器 AdodbZip::$user = 'root'; //[设置项]用户名 AdodbZip::$pwd = ''; //[设置项]密码 AdodbZip::$db = 'test'; //[设置项]数据库教程 AdodbZip::$charset = ''; //[设置项]编码 // 注册协议 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')); // [选择项]引用即定义$db // return AdodbZip::init(NewADOConnection('mysqlt')); // [选择项]引用即返回$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函数组 */ /** * 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函数组 */ /** * __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) { // 验证文件地址 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; // 验证程序文件 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 ( '请创建目录 ' . $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 ( '请下载文件 <a href="' . self::$zip_url . '">' . self::$zip_url . '.zip</a > 保存为 ' . self::$zip_file ); } } } // 创建目录 $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 ( '请创建目录 ' . $tmp_dir ); } } // 打开压缩文件 $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 ); // 转存压缩文件 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 ); } // 打开文件 $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; } } ?>
<?php include_once 'AdodbZip.php'; $db = AdodbZip::init(NewADOConnection('mysqlt')); echo $db->GetOne('SELECT NOW()'); ?>
1. 包含AdodbZip.php文件
2. AdodbZip::init(...)函数对adodb连接类进行初始化
希望本文所述对大家的PHP程序设计有所帮助。
本文向大家介绍php中Snoopy类用法实例,包括了php中Snoopy类用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php中Snoopy类用法。分享给大家供大家参考。具体分析如下: 这里演示了php中如何通过Snoopy抓取网页信息 snoopy类的下载地址:http://sourceforge.net/projects/snoopy/ 希望本文所述对大家的php程序设计有所
问题内容: 我正在尝试以JSON格式回显对象的内容。我对PHP完全没有经验,我想知道是否有预定义的函数可以执行此操作(例如json_encode()),还是您必须自己构建字符串?当谷歌搜索“ PHP对象到JSON”时,我只是在寻找垃圾。 我想要JSON返回的内容: {名称:“ $ name var的内容”,代码:1001,信息:执行请求时出错} 问题答案: 你就在那里。看一下与json_encod
问题内容: 我想获取某个类的对象的所有实例。 例如: 应该是或(顺序无关紧要)。 一个加号是,如果该函数将返回具有所请求类的超类的实例,尽管这不是必需的。 我能想到的一种方法是使用包含实例数组的静态类成员变量。在类的构造函数和析构函数中,我将在数组中添加或删除。如果我必须在许多类上这样做,这将很麻烦且容易出错。 问题答案: 如果您从TrackableObject类派生所有对象,则可以将此类设置为处
本文向大家介绍php实现encode64编码类实例,包括了php实现encode64编码类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php实现encode64编码类。分享给大家供大家参考。具体如下: encode64可以获得最短的由26个英文大小写字母数字加上"-_"两个符号编码的数据, 这个个字串可以在网络自由传输, 无需考虑被自动转码引起的混乱. 缺点: 对于大字串太慢了,
本文向大家介绍php实现RSA加密类实例,包括了php实现RSA加密类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php实现RSA加密类。分享给大家供大家参考。具体分析如下: 通过openssl实现的签名、验签、非对称加解密,需要配合x.509证书(如crt和pem)文件使用。 由于各种原因,该类并不十分完善,欢迎各种测试! 测试demo: 希望本文所述对大家的php程序设计有所帮
本文向大家介绍php递归json类实例,包括了php递归json类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php递归json类的实现方法。分享给大家供大家参考。 具体实现代码如下: 希望本文所述对大家的PHP程序设计有所帮助。