首页 > 作文

php中adodbzip类实例

更新时间:2023-04-06 09:21:22 阅读: 评论:0

本文实例讲述了php中adodbzip类程序代码。分享给大家供大家参考。具体如下:

复制代码 代码如下: <?php

/**

* adodbzip 1.1

*

* 代码示例:

* include_once ‘adodbzip.php’;

* $db = adodbzip::init(newadoconnection(‘mysql教程t’));

* echo $db->getone(‘lect 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. $rver、$ur、$pwd、$db可自定义。默认是mysql默认值,此项只有调用adodbzip::init方法后才起效果。

* 5. $chart可自定义。默认不改变编码,此项只有调用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::$rver = ‘localhost’; //[设置项]服务器

adodbzip::$ur = ‘root’; //[设置项]用户名

adodbzip::$pwd = ”; //[设置项]密码

adodbzip::$db = ‘test’; //[设置项]数据库教程

adodbzip::$chart = ”; //[设置项]编码



// 注册协议

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 $rver;

public static $ur;

public static $pwd;

public static $db;

public static $chart;



/**

* stream变量

*/

private $handle;

public $context;



/**

* adodb函数组

*/



/**

* init

* @param adodb &$adodb

* @return adodb

*/

public static function init(&$adodb) {

$adodb->connect ( lf::$rver, lf::$ur, lf::$pwd, lf::$db );

if(lf::$chart!=”){

$adodb->execute(‘t names ‘.lf::$chart.’;&新年电子贺卡#8217;);

}

return $adodb;

}



/**

* stream函数组

*/



/**

* __construct

*/

public function __construct() {

}



/**

* stream_cast

* @param int $cast_as

* @return resource

*/

public function stream_cast($cast_as) {

return fal;

}



/**

* stream_clo

*/

public function stream_clo() {

fclo ( $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 fal;

}

$tmp_file = lf::$extract_dir . directory_parator . $matches [1];

$entry_file = lf::$entry_dir . ‘/’ . str_replace ( ‘\’, ‘/’, $matches [1] );

$zip_file = lf::$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 ( lf::$zip_file ) )) {

if (mkdir ( dirname ( lf::$zip_file ), 0777, true ) === fal) {

header ( ‘content-type: text/html;chart=utf-8’ );

die ( ‘请创建目录 ‘ . $zip_dir );

}

}

// 下载文件

if (! file_exists ( lf::$zip_file )) {

$break = true;

do {

$url_arr = par_url ( lf::$zip_url );

$fp = fsockopen ( $url_arr [‘host’], ist ( $url_arr [‘port’] ) ? ( int ) $url_arr [‘port’] : 80, $errno, $errstr, 10 );

if ($fp === fal) {

break;

}

$out = “get ” . $url_arr [‘path’] . ” http/1.0rnhost: ” . $url_arr [‘host’] . ” rnconnection: clornrn”;

fputs ( $fp, $out );

if (feof ( $fp )) {

break;

}

$buffer = fgets ( $fp, 1024 );

if (! preg_match ( ‘/^http/1.d 200 /i’, $buffer )) {

break;

}

$content_length = fal;

$content_start = fal;

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 === fal || $content_start === fal) {

break;

}

$content = stream_get_contents ( $fp );

if ($content === fal) {

break;

}

$result = file_put_contents ( lf::$zip_file, $content );

unt ( $content );

if ($result === fal) {

break;

}

fclo ( $fp );

} while ( $break = fal );

if ($break) {

header ( ‘content-type: text/html;chart=utf-8’ );

碳酸钠与盐酸 die ( ‘请下载文件 <a href=”‘ . lf::$zip_url . ‘”>’ . lf::$zip_url . ‘.zip</a > 保存为 ‘ . lf::$zip_file );

}

}

}

// 创建目录

$tmp_dir = dirname ( $tmp_file );

if (! is_dir ( $tmp_dir )) {

if (mkdir ( $tmp_dir, 0777, true ) === fal) {

header ( ‘content-type: text/html;chart=utf-8’ );

die ( ‘请创建目录 ‘ . $tmp_dir );

}

}

// 打开压缩文件

$zip = zip_open ( $zip_file );

if (! is_resource ( $zip )) {

return fal;

}

// 寻找解压文件

do {

$entry = zip_read ( $zip );

if (! is_resource ( $entry )) {

return fal;

}

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_clo ( $entry );

zip_clo ( $zip );

}

// 打开文件

$this->handle = fopen ( $tmp_file, $mode );

if (! is_resource ( $this->handle )) {

return fal;

}

return true;

}



/**

* stream_read

* @param int $count

* @return string

*/

public function stream_read($count) {

return fread ( $this->handle, $count );

}



/**

* stream_ek

* @param int $offt

* @param int $whence=ek_t

* @return bool

*/

public function s创新例子tream_ek($offt, $whence = ek_t) {

return fek ( $this->handle, $offt, $whence );

}



/**

* stream_t_option

* @param int $option

* @param int $arg1

* @param int $arg2

* @return bool

*/

public function stream_t_option($option, $arg1, $arg2) 村晚的诗意{

return fal;

}



/**

* 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 fal;

}

$tmp_file = lf::$extract_dir . directory_parator . $matches [1];

if (file_exists ( $tmp_file )) {

if ($flag & stream_url_stat_link) {

return lstat ( $tmp_file );

} el {

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 fal;

}

}

?>

使用实例代码如下:


复制代码 代码如下: <?php

include_once ‘adodbzip.php’;

$db = adodbzip::init(newadoconnection(‘mysqlt’));

echo $db->getone(‘lect now()’);

?>

也是两步.

1. 包含adodbzip.php文件

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

希望本文所述对大家的php程序设计有所帮助。

本文发布于:2023-04-06 09:21:20,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/3ec2445ca9981d1c01470d27e8f5adfe.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:php中adodbzip类实例.doc

本文 PDF 下载地址:php中adodbzip类实例.pdf

标签:文件   程序   自定义   不存在
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图