';#opendir
if(function_exists('readdir')==false) $msg .= 'readdir函数不可用
';#readdir
if(function_exists('copy')==false) $msg .= 'copy函数不可用
';#copy
#检查php必要扩展
if(extension_loaded('Fileinfo')==false) $msg .= 'Fileinfo扩展不可用
';#Fileinfo
#检测upgrade目录是否可写
if(abcefile('upgrade')) $msg .= 'upgrade目录不可写
';
echo $msg;
break;
//手动升级检测
case "hand":
$upid = tsIntval($_GET['upid']);
include template('update_hand');
break;
//第一步检测可写权限
case "one":
include template('update_one');
break;
//第二步,升级数据库
case "two":
include template('update_two');
break;
case "twodo":
$upsql = tsTrim($_POST['upsql']);
if($upsql){
$arrSql = explode('--------------------',$upsql);
foreach($arrSql as $item){
$item = tsTrim($item);
if ($item){
$db->query($item);
}
}
//执行成功
echo '1';exit;
}else{
//无SQL可执行
echo '0';exit;
}
//echo '1';exit;
break;
//第三部,升级系统文件
case "three":
include template('update_three');
break;
case "threedo":
$upversion = tsTrim($_GET['upversion']);
if($upversion==''){
getJson('版本号有问题',1,0);
}
$filezip = $upversion.'.zip';
//先删除旧的zip升级文件
unlink('upgrade/'.$filezip);
delDir('upgrade/'.$upversion);
//拼接出要下载的远程文件
$upfile = 'https://www.thinksaas.cn/upgrade/'.$filezip;
//第一步:多线程下载zip压缩文件
$urls=array(
$upfile,
$upfile,
$upfile,
);
$save_to='upgrade/';
$mh=curl_multi_init();
foreach($urls as $i=>$url){
//$g=$save_to.basename($url);
$g = $save_to.$filezip;
if(!is_file($g)){
$conn[$i]=curl_init($url);
$fp[$i]=fopen($g,"w");
curl_setopt($conn[$i],CURLOPT_USERAGENT,"Mozilla/4.0(compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i],CURLOPT_FILE,$fp[$i]);
curl_setopt($conn[$i],CURLOPT_HEADER ,0);
curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,60);
curl_multi_add_handle($mh,$conn[$i]);
}
}
do{
$n=curl_multi_exec($mh,$active);
}while($active);
foreach($urls as $i=>$url){
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
fclose($fp[$i]);
}
curl_multi_close($mh);
chmod('upgrade/'.$filezip,0755);
//第二步:下载完之后开始解压覆盖原有文件
include 'thinksaas/pclzip.lib.php';
$archive = new PclZip('upgrade/'.$filezip);
if ($archive->extract(PCLZIP_OPT_PATH, 'upgrade/'.$upversion,PCLZIP_OPT_REPLACE_NEWER) == 0) {
getJson('升级包解压失败',1,0);
}else{
unlink('upgrade/'.$filezip);
}
//直接循环覆盖吧
file_list('upgrade/'.$upversion);
//删除目录
delDir('upgrade/'.$upversion);
getJson('升级成功',1,1);
break;
}