2014-01-23 35 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