使用pclzip实现的在线更新核心程序,远程下载zip更新包

<?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);

  }



  

?>




你可能感兴趣的:(程序,在线)