基于swoole的php源碼包升級(jí)原理實(shí)現(xiàn)

場(chǎng)景:假設(shè)一個(gè)員工管理系統(tǒng)項(xiàng)目有如下功能

  • 員工考勤管理
  • 員工請(qǐng)假管理
  • 薪資查詢
  • 員工報(bào)表統(tǒng)計(jì)
  • 合同管理

項(xiàng)目的要求很簡(jiǎn)單闯割,也很現(xiàn)實(shí):第一個(gè)版本只要員工考勤和員工請(qǐng)假管理,出來(lái)后立即發(fā)布竿拆。當(dāng)很多企業(yè)下載了該版本的員工管理系統(tǒng)宙拉,發(fā)現(xiàn)功能不齊,要求系統(tǒng)應(yīng)該增加后面的功能如输。于是就有了版本升級(jí)鼓黔。

當(dāng)有新的版本(含了新功能薪資查詢,報(bào)表統(tǒng)計(jì)等)如何才能做好版本的升級(jí)呢不见?

這里推薦用戶一鍵升級(jí)的方式來(lái)升級(jí)項(xiàng)目澳化,操作簡(jiǎn)單,就像桌面軟件一樣稳吮,發(fā)現(xiàn)有新的版本缎谷,點(diǎn)擊更新,不用做任何操作就會(huì)升級(jí)到最新版本灶似。

如何實(shí)現(xiàn)一鍵升級(jí)列林?

這里推薦swoole搭建一個(gè)websocket服務(wù),來(lái)實(shí)現(xiàn)前端交互酪惭。整體設(shè)計(jì)流程如下圖所示:


升級(jí)流程
主要文件如下:

version(文件)
db/(數(shù)據(jù)庫(kù)目錄)
db/userdb.sql(上傳過(guò)程中產(chǎn)生的備份的用戶數(shù)據(jù))
upgrade.php (當(dāng)前項(xiàng)目主升級(jí)文件)
...//其他項(xiàng)目文件
down/db/sys.sql (最新數(shù)據(jù)庫(kù)結(jié)構(gòu)希痴,以及系統(tǒng)數(shù)據(jù)文件)
down/upgrade.php (上傳包解壓后的主升級(jí)文件)
down/(升級(jí),上傳壓縮文件目錄)
down/version
down/.. 其他文件

主要流程:
  • 上傳壓縮文件:將遠(yuǎn)程包下載到本地春感,點(diǎn)擊上傳(這里采用ajax異步上傳)
  • 解壓縮:將上傳的壓縮包解壓到 down目錄下砌创。
  • 檢驗(yàn)文件合法性:避免上傳的非法文件,或者非項(xiàng)目的壓縮包鲫懒,導(dǎo)致整個(gè)項(xiàng)目癱瘓嫩实。
  • 校驗(yàn)版本:如果要升級(jí)的版本大于當(dāng)前項(xiàng)目版本,方可升級(jí)窥岩。
  • 覆蓋項(xiàng)目文件:將down解壓下的所有文件覆蓋原項(xiàng)目下的文件甲献。
  • 熱重啟:這一步很重要。swoole 熱重啟的方法為:$server->reload(); 后面會(huì)介紹為什么需要熱重啟颂翼!
  • 備份用戶數(shù)據(jù)晃洒,刪除原數(shù)據(jù)表:表分用戶表和數(shù)據(jù)表,后面做詳細(xì)介紹疚鲤。
  • 導(dǎo)入最新表:將最新的表結(jié)構(gòu)和系統(tǒng)數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)锥累,并且將上一步導(dǎo)入的用戶數(shù)據(jù)表導(dǎo)入到數(shù)據(jù)庫(kù)。完成數(shù)據(jù)庫(kù)的升級(jí)和恢復(fù)
  • 更改版本號(hào) 將down/version替換項(xiàng)目下version文件
  • 升級(jí)完成集歇!
更好的升級(jí)辦法

上傳壓縮包可以做成到云上自動(dòng)下載。這樣可以實(shí)現(xiàn)真正的一鍵升級(jí)语淘,也可以避免因?yàn)樯蟼麇e(cuò)壓縮包導(dǎo)致系統(tǒng)癱瘓的風(fēng)向诲宇。

為什么要熱重啟际歼?

也許,之前的upgrade.php文件并不完善姑蓝,但是每次我們項(xiàng)目的upgrade.php文件是通過(guò)swoole運(yùn)行在內(nèi)存中鹅心,只要進(jìn)程不斷開(kāi),替換或者刪除項(xiàng)目下的upgrade.php文件纺荧,原來(lái)的upgrade.php依舊正常運(yùn)行旭愧。當(dāng)upgrade.php升級(jí)邏輯做了改變的時(shí)候,怎樣才能實(shí)現(xiàn)運(yùn)行的是上傳上去新版本的upgrade.php呢宙暇?
swoole官網(wǎng)提供了熱重啟功能输枯。當(dāng)熱重啟完成后,再次進(jìn)入websocket接口占贫,運(yùn)行的便是最新上傳的升級(jí)文件桃熄。

用戶數(shù)據(jù)和系統(tǒng)數(shù)據(jù)

用戶數(shù)據(jù)指的是用戶產(chǎn)生的數(shù)據(jù),比如該項(xiàng)目中的用戶信息型奥。系統(tǒng)數(shù)據(jù)指的是系統(tǒng)控制的數(shù)據(jù)瞳收,比如所有的員工類型。
升級(jí)數(shù)據(jù)庫(kù)最好的辦法就是 將數(shù)據(jù)表結(jié)構(gòu)和系統(tǒng)數(shù)據(jù)升級(jí)到最新厢汹,然后導(dǎo)入原來(lái)的用戶數(shù)據(jù)螟深。


文檔結(jié)束!
不懂可以加qq:1186969412 qq群:536633782
官網(wǎng):http://uminicmf.com/


php在線面試題集:http://cainiaophp.com/
php面試討論群:536633782

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末烫葬,一起剝皮案震驚了整個(gè)濱河市界弧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌厘灼,老刑警劉巖夹纫,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異设凹,居然都是意外死亡舰讹,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門闪朱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)月匣,“玉大人,你說(shuō)我怎么就攤上這事奋姿〕” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵称诗,是天一觀的道長(zhǎng)萍悴。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么癣诱? 我笑而不...
    開(kāi)封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任计维,我火速辦了婚禮,結(jié)果婚禮上撕予,老公的妹妹穿的比我還像新娘鲫惶。我一直安慰自己,他們只是感情好实抡,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布欠母。 她就那樣靜靜地躺著,像睡著了一般吆寨。 火紅的嫁衣襯著肌膚如雪赏淌。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天鸟废,我揣著相機(jī)與錄音猜敢,去河邊找鬼。 笑死盒延,一個(gè)胖子當(dāng)著我的面吹牛缩擂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播添寺,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼胯盯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了计露?” 一聲冷哼從身側(cè)響起博脑,我...
    開(kāi)封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎票罐,沒(méi)想到半個(gè)月后叉趣,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡该押,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年疗杉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚕礼。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡烟具,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出奠蹬,到底是詐尸還是另有隱情朝聋,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布囤躁,位于F島的核電站冀痕,受9級(jí)特大地震影響荔睹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜金度,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一应媚、第九天 我趴在偏房一處隱蔽的房頂上張望严沥。 院中可真熱鬧猜极,春花似錦照卦、人聲如沸址貌。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)翩瓜。三九已至受扳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間兔跌,已是汗流浹背勘高。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坟桅,地道東北人华望。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像仅乓,于是被迫代替她去往敵國(guó)和親赖舟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容