2014-01-23 71 views
0

我在構建一個CakePHP應用程序,人們可以在其主機上安裝它。 與此同時,我仍在開發應用程序,所以我希望人們只需點擊更新按鈕即可更新它。 從我在控制器中編寫新代碼的時刻開始,創建新的組件,......,我將它推到「源服務器」上,然後他們點擊更新,然後他們必須在服務器上擁有所有這些更新代碼。 我在想寫一個執行git pull/fetch的exec(命令行),但並不是每個託管都安裝了git,所以這不是最好的解決方案。 有人可以幫我解決嗎?CakePHP更新按鈕

由於提前,

亞倫

回答

1

你需要實現一個包裝系統:你的PHP腳本將下載包含來自源的所有代碼zip文件,在臨時文件夾解壓,閱讀元數據文件告訴您的腳本插件或應用程序代碼是什麼版本,將其與正在運行的版本進行比較,可能會執行一些安全檢查,如校驗和,或者如果您想要實施簽名檢查。當檢查成功時,您將不得不用包中的文件替換現有的文件。

如果您保留以前版本的zip,您甚至可以選擇執行回滾。不要忘記你的更新代碼也需要一種方法來啓動數據庫遷移。我會開發一個「Package」或「PluginManager」插件來完成所有這些。事件系統可用於在安裝/卸載事件時觸發事件。

Wordpress這樣做,你可能想看看它做什麼,但我不會推薦採取任何富有的WordPress代碼,只是使用這個概念。

+0

謝謝,這很有道理!所以我認爲最好的方法是在應用程序中不要有更新代碼。我將深入研究Wordpress如何實現它。非常感謝 ! – Aaron

+0

您可以擁有應用程序本身的更新代碼。 Wordpress設法以某種方式更新自己。我想可能會有一些問題在飛行中,但沒有解決不了的問題。 – burzum

0

像joomla,wordpress,你可以創建安裝包,它可以檢查當前版本和檢查服務器版本。 stept2
壓縮後創建的數據庫和文件備份從服務器的臨時目錄下
第三步:下載pakedge
第四步:與舊的一個
STEP5更換新的lib如果升級成功,然後從臨時目錄中刪除PKG並刪除舊文件備份
step6如果失敗替換網站sitebackup