<?php
include_once(‘./Public/Update/class-pclzip.php‘);
header(‘Content-type: text/json‘);
error_reporting(E_ALL^E_NOTICE^E_WARNING);
if($_GET[‘a‘]==‘start‘){
//链接数据库判断是否具有超出授权期限
$conn=mysql_connect(‘127.0.0.1‘,‘xxx‘,‘wxaxxxdmin‘);
mysql_query("set names ‘utf8‘");
mysql_select_db(‘wxadmin‘);
$sql ="select * from ims_domains where `domain` = ‘".$_GET[‘server‘]."‘ AND `is_domain` = ‘1‘ limit 1";
$result = mysql_query($sql,$conn);
while($rs = mysql_fetch_array($result)){
if(strtotime($rs[‘end_time‘]) < time()){
$info = array(
‘status‘=>‘0‘,
‘info‘ => ‘您的授权时间已过期,请联系QQ1129282710充值续费‘
);
}else{
header("Content-type:text/html;charset=utf-8");
$filename = ‘http://xxx.cn/Update/fjyedhlcbn/‘.$_GET[‘url‘].‘.zip‘;
$file = getImage($filename,‘‘,$_GET[‘url‘].‘.zip‘,1);
//开始升级
if($file){
$filezip = $_GET[‘url‘].‘.zip‘;
if(file_exists($filezip)){
//开始解压
$zip = new PclZip($filezip);
if(!($list = $zip->listContent())){
$info = array(
‘status‘=>‘1‘,
‘info‘ => ‘获取升级包内容列表失败:‘.$zip->errorInfo(true)
);
}else{
$zip->extract(PCLZIP_OPT_PATH, ‘./‘,
PCLZIP_OPT_REPLACE_NEWER);
//开始数据库升级
$updatefile = ‘update.sql‘;
$sql = file_get_contents($updatefile);
if($sql){
$sql = $sql;
foreach(split(";[\r\n]+", $sql) as $v) {
@mysql_query($v);
}
@unlink($updatefile);
}
$info = array(
‘status‘=>‘1‘,
‘info‘ =>‘升级成功,请刷新查看是否还有升级包‘
);
@unlink($filezip);
}
}else{
$info = array(
‘status‘=>‘0‘,
‘info‘ =>‘未找到升级包‘
);
}
}else{
$info = array(
‘status‘=>‘0‘,
‘info‘=> ‘下载失败‘
);
}
}
}
mysql_close($con);
echo json_encode($info);
}
if ($_GET[‘a‘] == ‘check‘) {
echo json_encode(‘20150821‘);
}
if ($_GET[‘a‘] == ‘update‘) {
if ($_GET[‘v‘]) {
switch ($_GET[‘v‘]) {
case ($_GET[‘v‘] < ‘20150816‘):
$arr = array(
‘banben‘ => ‘20150817‘,
‘url‘ => ‘http://xxx.com/Update/fjyedhlcbn/20150817.zip‘,
‘content‘ => ‘1.初始化在线更新。<br>
‘
);
echo json_encode($arr);
break;
case ‘20150818‘:
$arr = array(
‘banben‘ => ‘20150820‘,
‘url‘ => ‘20150820‘,
‘content‘ => ‘ 1.第一次在线更新测试<br/>
‘
);
echo json_encode($arr);
break;
case ‘20150820‘:
$arr = array(
‘banben‘ => ‘20150821‘,
‘url‘ => ‘20150821‘,
‘content‘ => ‘ 1.第二次在线二次在线更二次在线更二次在线更二次在线更更新测试<br/>
2.第二二次在线更次在线更新测试<br/>
3.第二次二次在线更在线更新测试<br/>
4.第二次二次在线更二次在线更二次在线更在线更新测试<br/>
5.第二次在线更新测试<br/>
6.第二次二次在线更二次在线更二次在线更在线更新测试<br/>
7.第二次二次在线更二次在线更二次在线更在线更新测试<br/>
8.第二次二次在线更二次在线更二次在线更在线更新测试<br/>
9.第二次二次在线更二次在线更二次在线更在线更新测试<br/>
10.第二次二次在线更二次在线更二次在线更在线更新测试<br/>
‘
);
echo json_encode($arr);
break;
}
}
}
/*
*功能:php完美实现下载远程图片保存到本地
*参数:文件url,保存文件目录,保存文件名称,使用的下载方式
*当保存文件名称为空时则使用远程文件原来的名称
*/
function getImage($url,$save_dir=‘‘,$filename=‘‘,$type=0){
if(trim($url)==‘‘){
return array(‘file_name‘=>‘‘,‘save_path‘=>‘‘,‘error‘=>1);
}
if(trim($save_dir)==‘‘){
$save_dir=‘./‘;
}
if(trim($filename)==‘‘){//保存文件名
$ext=strrchr($url,‘.‘);
if($ext!=‘.gif‘&&$ext!=‘.jpg‘){
return array(‘file_name‘=>‘‘,‘save_path‘=>‘‘,‘error‘=>3);
}
$filename=time().$ext;
}
if(0!==strrpos($save_dir,‘/‘)){
$save_dir.=‘/‘;
}
//创建保存目录
if(!file_exists($save_dir)&&!mkdir($save_dir,0777,true)){
return array(‘file_name‘=>‘‘,‘save_path‘=>‘‘,‘error‘=>5);
}
//获取远程文件所采用的方法
if($type){
$ch=curl_init();
$timeout=5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$img=curl_exec($ch);
curl_close($ch);
}else{
ob_start();
readfile($url);
$img=ob_get_contents();
ob_end_clean();
}
//$size=strlen($img);
//文件大小
$fp2=@fopen($save_dir.$filename,‘a‘);
fwrite($fp2,$img);
fclose($fp2);
unset($img,$url);
return array(‘file_name‘=>$filename,‘save_path‘=>$save_dir.$filename,‘error‘=>0);
}
?>
本文出自 “枷罗博客” 博客,请务必保留此出处http://jhomephper.blog.51cto.com/8558055/1688376
使用pclzip实现的在线更新核心程序,远程下载zip更新包
原文地址:http://jhomephper.blog.51cto.com/8558055/1688376