目前的需求場景如下:
我開發一個擴展,運行在各個開源的cms系統,例如wordpress,discuz等等。
現在假如一個用戶安裝使用我們的產品,我們這邊發新版本,提示用戶更新,用戶點一個按鈕,然後瞬間升級到新版本了。用戶表示很滿意。
用戶是滿意了,但是我們這邊要完成這個動作,我們必須為每個開源cms開發自動升級系統。這個系統我開發過,對比版本啊,下載檔案啊,什麼的,感覺還是挺麻煩的,單一cms還可以,但是以後擴展到很多個cms,我們都要針對這套cms開發這個東西,那工作量就十分巨大了。所以,我現在希望發展一套公用的機制,能應用到所有的cms系統裡面,有什麼好的方法嗎?
──────────────────────────
我現在想到了一個方法。首先實現這個功能的困難在於,一個php檔案不可能自己替換自己。也就是這個運行的php檔案不可能把自己刪除或修改自己的原始碼。
所以,必須有個檔案是扮演這個修改別人的角色。他自己的東西不動,他的存在就是為了改變別人。
例如這個擴充下面有a、b、c三個檔。當使用者點擊升級,發送一個ajax請求,直接訪問運行c文件,c文件是獨立運行的,不依賴其他文件而存在。這樣,他可以對a、b這些檔案就行修改、刪除等等,也就達到了自動更新的目的,而所有的cms擴展,我只要在每個目錄下面放一個檔案c,那就好了,這個工作量是不是倍增的減少了?
這個方案可行嗎?
目前的需求場景如下:
我開發一個擴展,運行在各個開源的cms系統,例如wordpress,discuz等等。
現在假如一個用戶安裝使用我們的產品,我們這邊發新版本,提示用戶更新,用戶點一個按鈕,然後瞬間升級到新版本了。用戶表示很滿意。
用戶是滿意了,但是我們這邊要完成這個動作,我們必須為每個開源cms開發自動升級系統。這個系統我開發過,對比版本啊,下載檔案啊,什麼的,感覺還是挺麻煩的,單一cms還可以,但是以後擴展到很多個cms,我們都要針對這套cms開發這個東西,那工作量就十分巨大了。所以,我現在希望發展一套公用的機制,能應用到所有的cms系統裡面,有什麼好的方法嗎?
──────────────────────────
我現在想到了一個方法。首先實現這個功能的困難在於,一個php檔案不可能自己替換自己。也就是這個運行的php檔案不可能把自己刪除或修改自己的原始碼。
所以,必須有個檔案是扮演這個修改別人的角色。他自己的東西不動,他的存在就是為了改變別人。
例如這個擴充下面有a、b、c三個檔。當使用者點擊升級,發送一個ajax請求,直接訪問運行c文件,c文件是獨立運行的,不依賴其他文件而存在。這樣,他可以對a、b這些檔案就行修改、刪除等等,也就達到了自動更新的目的,而所有的cms擴展,我只要在每個目錄下面放一個檔案c,那就好了,這個工作量是不是倍增的減少了?
這個方案可行嗎?
想到一個大概的思路:
首先建議分大版本更新以及補丁更新的,大版本更新如果比較複雜還是得下載文件覆蓋文件的方式人工進行。
小版本更新,可以建立一個通用的更新部署方式:
客戶端統一更新請求到中心伺服器端的處理更新的介面或入口文件,透過入口文件根據客戶端提交的本地環境系列數據,動態產生升級包以及部署的JSON設定文件,客戶端接收好以後讀取這個JSON然後升級資料庫、替換文件等等,這樣伺服器端只要不斷的維護版本升級以後各種CMS升級規則就可以。
話說回來,工作量還是龐大!
composer
!composer
!composer
!!!!!!!!!
既然PHP不能改自己,那就改配置文件,或改資料庫啊,問題不就解決了。