国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > WEB開發(fā) > 正文

Discuz!2.0到Discuz!5.0升級成功筆記

2024-04-27 13:56:22
字體:
供稿:網(wǎng)友

先說為什么升級吧,可能了解Discuz!的朋友看到版本號就知道為什么升級了。沒錯,版本太低,論壇發(fā)展受到很大制約成了升級的一個重要原因;另外一個重要原因就是升級前的一段時間社區(qū)訪問量又有大幅上升,負載能力的不足,給用戶帶來不良體驗,影響用戶發(fā)貼積極性,制約社區(qū)發(fā)展。于是痛下決心升級...(ps:我是剛來到公司,系統(tǒng)早該升級了但由于人員不足一直沒能落實),整個升級過程由我主刀,前期準備也就是仔細對比現(xiàn)有社區(qū)數(shù)據(jù)庫與dz5.0數(shù)據(jù)庫。自從開始使用dz2.0,就開始對其改造,經(jīng)過近兩年的改造,從程序到數(shù)據(jù)庫被改動的地方非常多真可謂“面目全非”,程序的效率及負載能力也因此受到影響。

    下面廢話就不多說了,先講一下大概的過程吧。

    既然升級就需要有所取“舍”,輕裝上陣才是硬道理(并不是要丟棄一些數(shù)據(jù),只是放到最后去做)。

    一:分析用戶數(shù)據(jù);
        ①. 由于dz2時期用戶資料及個性設(shè)置均存儲在members表,而dz5是將用戶信息和詳細資料個性設(shè)置分別存儲在members,和memberfileds兩個表中。
        ②. 兩個版本對于用戶組的統(tǒng)計存儲有較大改動,dz2時期全部依靠credit的值對照usergroup中的設(shè)置來確定用戶組,而dz5則是根據(jù)credits確定用戶組之后將組id保存在groupid字段,因此在轉(zhuǎn)移用戶數(shù)據(jù)時就需要對用戶組設(shè)置有較全面的了解,主要是了解各個用戶組的劃分界限及組id,在寫升級程序時要用到這些數(shù)據(jù)。
        ③. dz2時期用status來區(qū)分用戶權(quán)限,而dz5中用adminid,groupid來檢查權(quán)限,因此升級程序要對status為Admin,SuperMod,Moderator,Banned,PostBanned,Inactive的用戶重新分配groupid而不能單一通過②中的方法確定。其他字段的數(shù)據(jù)很容易處理,也沒什么特殊之處而且有一部分是兩個版本相同的字段。
        ④. 因為以前安裝的銀行跟現(xiàn)在的銀行也有較大改變,dz2時期在用戶表中有bank和money字段分別存儲存款和現(xiàn)金,dz5中沒有存款字段了,只好把用戶的存款全部加到現(xiàn)金中,然后保存到dz5的銀行擴展字段extcreditsX (X=1,2,…8)。還有一個需要注意的就是存款的利息,(雖然你可能會覺得這個應(yīng)該是毛毛雨啦,但用戶會很在意的。。。)轉(zhuǎn)移銀行存款時一起結(jié)算吧~~

    二:分析帖子數(shù)據(jù);大家都知道,帖子數(shù)據(jù)是要分threads和posts兩個表的,因此在這一步還要分開考慮threads和posts,要注意的就是帖子類型的不同,轉(zhuǎn)數(shù)據(jù)時會涉及到其他表。從dz2時期就有了"投票帖","附件",升級程序在遇到這些特殊帖子時就需要同時轉(zhuǎn)移投票選項及附件的數(shù)據(jù)(當(dāng)然你也可以一個表一個表的轉(zhuǎn)),怎么判斷遇到了這些特殊帖?有兩個字段可以參考dz2.threads.pollopts和dz2.posts.aid。對于threads表,

        ①. 需要注意的是authorid,在dz2的threads表不記錄發(fā)帖者uid,因此需要查出dz2.threads表中每條數(shù)據(jù)對應(yīng)的uid。
' http://m.survivalescaperooms.com/article.asp?typeid=114
        ②. 轉(zhuǎn)移投票帖時需要注意的是:dz2對投票選項采用了serialize()編碼,因此就需要unserialize,下面把我的這部分代碼貼出來供參考:

       if ($rows['pollopts']){           // 處理投票帖

              $pollopts = unserialize($rows['pollopts']);

              $i = 0;

              foreach ($pollopts as $key => $v1){

                     if ($key=='options')

                     foreach ($v1 as $v){

                            $sql = "INSERT INTO dz5.polloptions (`tid`,`votes`,`displayorder`,`polloption`,`voterids`)VALUES('$rows[tid]','$v[1]','0','$v[0]','')";

                            jkquery($sql,1,0);

                     }

                     if ($key=='mult

                     $polls['maxchoices'] = '1';

              }

              $sql = "INSERT INTO dz5.polls (`tid`,`multiple`,`visible`,`maxchoices`) VALUES('$rows[tid]','$polls[multiple]','1','$polls[maxchoices]')";

              jkquery($sql,1,0);

       }

說明:jkquery是封裝的函數(shù),參數(shù)一$sql是需執(zhí)行的SQL;參數(shù)二為1時執(zhí)行SQL,為0時不執(zhí)行SQL;參數(shù)三為1時輸出SQL,為0時不輸出SQL;這樣封裝是為了調(diào)試的方便,具體函數(shù)見附件。

③. 對于特殊帖需要在dz5版的threads表special字段做出標記,方法:$rows['pollopts']?1:0; 其中$rows查尋dz2.threads的結(jié)果集。

對于posts表,①. 用樣有authorid的問題。②.對于包含附件的帖子同時轉(zhuǎn)移附件數(shù)據(jù),好在dz2時期一個帖子只能發(fā)一個附件,不然數(shù)據(jù)量又變大了J其他就沒什么特殊的問題了。

對于一個社區(qū)而言,這兩方面的數(shù)據(jù)是最重要的,其他數(shù)據(jù)的轉(zhuǎn)移我就不說了。。。。

有一點就是我沒有把程序整合到一起,而是利用<meta http-equiv="refresh" content="1 url=xxx.php">保持各個程序連貫運行。各個程序分開有利于編寫時調(diào)試。再一點就是程序在轉(zhuǎn)移數(shù)據(jù)時可以一次插入N條數(shù)據(jù),這樣做有好處也有風(fēng)險,好處是減少與MySQL的通訊次數(shù)縮短運行時間,但是如果在其中一條數(shù)據(jù)出現(xiàn)插入錯誤時就會造成后面的數(shù)據(jù)丟失。比如:半個字的問題,轉(zhuǎn)義不管用的。。。 升級程序的效率還是需要注意的喔!在一切準備充分之后選擇在凌晨3:00-8:00升級,事實上數(shù)據(jù)轉(zhuǎn)移所花費的時間不到3個小時,共轉(zhuǎn)移用戶1100000++ ,帖子12000000++ ,其他數(shù)據(jù)累計也有千萬之多,程序效率還是很重要的

數(shù)據(jù)升級完成只是新任務(wù)的開始:升級之前一定要注意的就是要規(guī)劃好每一步該做什么,切忌亂了陣腳,因為用戶可能會不習(xí)慣新版本,留戀老版本中的一些功能,而鑒于此就需要在新版中重新開發(fā)或者把老版中的相關(guān)功能遷移到新版。如果以前安裝的插件比較多,可能就有更多的后續(xù)任務(wù)要做了,比如:插件所用到的數(shù)據(jù),這些數(shù)據(jù)可能很集中這樣還比較簡單,也可能很分散這樣就比較麻煩一些,這些就要看具體情況了。

    升級改版不是只是新任務(wù)的開始,解決因升級而產(chǎn)生的問題才是最重要的。很多東西并不像我們升級前想象的那么理想,因為用戶的需求是千變?nèi)f化的。

附件是短消息,和收藏夾的升級程序,由于以前的數(shù)據(jù)庫改動較大,升級程序也具通用性也就不發(fā)出來了,或許看后能有一些啟發(fā)~

 (ps: 這里沒法添加附件...)

http://blog.csdn.net/zhys9/archive/2007/02/23/1513163.aspx


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 金坛市| 黄陵县| 井陉县| 安塞县| 固安县| 福海县| 教育| 清流县| 马尔康县| 英德市| 宜良县| 泰和县| 武夷山市| 邵阳市| 卢氏县| 横峰县| 玉龙| 大悟县| 扎兰屯市| 金华市| 陆川县| 泸西县| 合川市| 延长县| 株洲县| 宝坻区| 疏附县| 深泽县| 陆河县| 政和县| 达日县| 阳城县| 连山| 凤冈县| 九龙城区| 固原市| 池州市| 忻城县| 阳朔县| 宁明县| 高密市|