本文实例讲述了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 条评论) |