首页 > php在线更新解决方案

php在线更新解决方案

目前的需求场景如下:

我开发一个扩展,运行在各个开源的cms系统,比如wordpress,discuz等等。

现在假如一个用户安装使用我们的产品,我们这边发新版本,提示用户更新,用户点一个按钮,然后瞬间升级到新版本了。用户表示很满意。

用户是满意了,但是我们这边要完成这个动作,我们必须为每个开源cms开发自动升级系统。这个系统我开发过,对比版本啊,下载文件啊,什么的,感觉还是挺麻烦的,单个cms还可以,但是以后扩展到很多个cms,我们都要针对这套cms开发这个东西,那工作量就十分巨大了。所以,我现在希望开发一套公用的机制,能应用到所有的cms系统里面,有什么好的方法吗?

--------------------------

我现在想到了一个方法。首先实现这个功能的难点在于,一个php文件不可能自己替换自己。也就是这个运行的php文件不可能把自己删除或者修改自己的源码。

所以,必须有个文件是充当这个修改别人的角色。他自己的东西不动,他的存在就是为了改变别人。

比如这个扩展下面有a、b、c三个文件。当用户点击升级,发送一个ajax请求,直接访问运行c文件,c文件是独立运行的,不依赖其他文件而存在。这样,他可以对a、b这些文件就行修改、删除等等,也就达到了自动更新的目的,而所有的cms扩展,我只要在每个目录下面放一个文件c,那就好了,这个工作量是不是成倍的减少了?

这个方案可行吗?


php 为什么不能自己更新自己呢? Linux 服务器允许修改正在允许的二进制程序, php 脚本就更允许修改啦。


想到一个大概的思路:

首先建议分大版本更新以及补丁更新的,大版本更新如果比较复杂还是得下载文件覆盖文件的方式人工进行。

小版本更新,可以构建一个通用的更新部署方式:
客户端统一更新请求到中心服务器端的处理更新的接口或者入口文件,通过入口文件根据客户端提交的本地环境系列数据,动态生成一个升级包以及部署的JSON配置文件,客户端接收好以后读取这个JSON然后升级数据库、替换文件等等,这样服务器端只要不断的维护版本升级以后各种CMS升级规则就可以。

话说回来,工作量还是巨大!


composer!
composer!
composer!
!!!!!!!!!


思维真僵化。

既然PHP不能改自己,那就改配置文件,或改数据库啊,问题不就解决了。

【热门文章】
【热门文章】