网站地图    收藏   

主页 > 后端 > discuz >

关于DISCUZ升级程序 - Discuz

来源:自学PHP网    时间:2014-12-03 20:51 作者: 阅读:

[导读] DISCUZ版本过低腰升级的话,官方好像也没有升级程序,让DISCUZ提供技术支持,费用太贵,自己处理,以下是核心代码.注意:cdb_templates 这个表不能导,否则一清空缓存就乱了,切记,花了一天时间才...

关于DISCUZ升级程序

DISCUZ版本过低腰升级的话,官方好像也没有升级程序,让DISCUZ提供技术支持,费用太贵,自己处理,以下是核心代码.

注意:cdb_templates 这个表不能导,否则一清空缓存就乱了,切记,花了一天时间才找到.

主程序:

  1. set_time_limit(9999999); 
  2.  
  3. include "inc/init.php 
  4.  
  5. cls::getDatabase()->start(); 

类程序:

  1. class common_database{ 
  2.   //所有有数据的表 
  3.   private $_needtable = null; 
  4.   //表对应关系 - 优先这样导入 
  5.   private $_distablearr = array
  6.    'cdb_members'=>array('yzlt_common_member','yzlt_ucenter_members'), 
  7.    'cdb_settings'=>'yzlt_ucenter_settings'
  8.     
  9.    ''=>'' 
  10.   ); 
  11.   //明确禁止导入的表 
  12.   private $_disable_table = array('cdb_templates','cdb_buddys','cdb_caches','cdb_favorites','cdb_memberspaces','cdb_mythreads','cdb_myposts','cdb_projects','cdb_stats'); 
  13.  
  14.   //构造函数 
  15.   public function __construct() 
  16.   { 
  17.   } 
  18.    
  19.    
  20.   public function start(){ 
  21.    // 
  22.    $rst = $this->getNeedTable(); 
  23.    foreach($rst as $tb){ 
  24.     $this->importTable($tb);//逐个导入表 
  25.     //break; 
  26.    } 
  27.    //收尾工作 
  28.    $this->endDoing(); 
  29.   } 
  30.    
  31.   private function endDoing(){ 
  32.    //给会员再加密 
  33.    $rs = cls::getDB()->getRowsNew("select uid,password from yzlt_ucenter_members");$num = count($rs); 
  34.    for($i=0;$i<$num;$i++){ 
  35.     cls::getDB()->Query("update yzlt_ucenter_members set password='".md5($rs[$i]["password"])."' where uid='".$rs[$i]["uid"]."'"); 
  36.    } 
  37.    //其他操作 
  38.   } 
  39.    
  40.   private function getShoulTable($tb){ 
  41.    $DB1 = cls::getDB(1); 
  42.    $sqla = "describe ".$tb.""
  43.    $rsa = $DB1->getRowsNew($sqla);//原来表字段 
  44.    $numa = count($rsa); 
  45.    $DB = cls::getDB(); 
  46.    $sql = "show tables"
  47.    $rs = $DB->getRowsNew($sql);$num = count($rs); 
  48.    $samenumtj = 0;$mytb=''
  49.    for($i=0;$i<$num;$i++){ 
  50.     $rscc = $DB->getRowsNew("describe ".$rs[$i][0]);$numcc = count($rscc); 
  51.     $samezd = 0; 
  52.     for($k1=0;$k1<$numa;$k1++){ 
  53.      for($k=0;$k<$numcc;$k++){ 
  54.       if($rsa[$k1][0]==$rscc[$k][0]){ 
  55.        $samezd++; 
  56.       } 
  57.      } 
  58.     } 
  59.     //echo " 
  60. 源表:".$tb.",目标表:".$rs[$i][0].",相同字段数:".$samezd.""; 
  61.     if((int)$samezd>(int)$samenumtj){ 
  62.      //echo "----------------".$samenumtj; 
  63.      $samenumtj = $samezd;$mytb = $rs[$i][0]; 
  64.     } 
  65.     //$samefield = array_intersect($rsa,$rscc);$samenum = count($samefield); 
  66.     //if($samenum>=$samenumtj){ 
  67.     // $samenumtj = $samenum;$mytb = $rs[$i][0]; 
  68.     // echo "表名:".$mytb.",相同字段数:".$samenumtj." 
  69. "; 
  70.     /

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论