crazedsanity / webdbupgrade
用于处理Web应用程序脚本升级的库
Requires
- php: >=5.3.0
- crazedsanity/database: ^0.4
- crazedsanity/lockfile: ^0.1
This package is not auto-updated.
Last update: 2024-09-20 22:12:56 UTC
README
注意: 这份文档仍在不断完善中,所以将其视为更多指南而不是规则。如果您发现其中有任何错误,请修复它并通过拉取请求或您希望的方式告诉我...或者告诉我有关它的信息。或者处理它...无论您更喜欢哪种方式。
预设观念
CS Web DB Upgrade 是基于对您的 Web 应用程序的几个预设观念构建的。
- 存在一个“生产”应用程序的概念
- 存在一个测试环境,其中测试更改
- 升级是脚本化的(模式、数据库值、文件系统事物等)
可以将系统配置为每次查看页面时自动升级,通过自定义 shell 脚本,或者...您想怎么都行。这是您的应用程序。
它做什么
CS Web DB Upgrade 是为了使数据库驱动的 Web 应用程序的升级无缝。而不是手动按特定顺序更改事物,通过脚本自动化此过程!
旧方法
- 手动“标记”网站为维护中(用响应所有请求的“维护中”或类似内容的网站替换)
- 手动更新代码(通过解压缩 zip 文件或使用 SCM 命令(如
svn update或git pull)覆盖它) - 手动运行模式更改
- 手动更新现有记录
- 手动修复现有配置文件
- 手动修复现有杂项文件(例如,图像路径)
- 希望一切顺利...如果不顺利,修复它们,也许要祈祷和流汗
- 手动“取消标记”网站为维护模式(见 #1)
您看到了一个模式吗?
遇见您的救星!这个系统增加了允许您的系统自动升级的能力。每次您在 VERSION 文件中增加版本时,它都可以运行一个自定义脚本,该脚本将执行您所需的所有操作,并且直到完成之前都将其他人拒之门外。一旦系统更新,下一个触摸包含升级系统的代码将导致它运行。
新方法
- 手动(或自动)更新应用程序
- 运行升级脚本(通常在应用程序使用时自动运行)
就是这样!如果升级因任何原因失败,特殊的“锁定文件”将自动将您的应用程序置于“维护模式”,防止用户访问数据库。而且这让您免于必须进行任何特殊操作才能打开那个“维护模式”。太棒了!
如何使用 CS Web DB Upgrade
以下步骤有助于您尽可能少的麻烦地开始。一旦您熟悉了这个系统,您就能做几乎所有您想做的事情。
创建一个文件,upgrades/upgrade.ini。最重要的部分是“main”部分。以下是一个示例
[main]
initial_version=0.0.1
[v0.0.1]
target_version=0.0.2
script_name=upgradeTo0.0.2.php
class_name=upgrade_to_0_0_2
call_method=run_upgrade
[v0.0.2]
target_version=0.1.0
script_name=upgradeTo0.1.0.php
class_name=upgrade_to_0_1_0
call_method=run_upgrade
[v0.3.5-ALPHA1]
target_version=0.3.5-BETA2
script_name=upgradeTo0.3.5-BETA2.php
class_name=upgrade_to_0_3_5_BETA2
call_method=run_upgrade
[v0.3.6]
target_version=1.0.0
script_name=upgradeTo1.0.0.php
class_name=upgrade_to_1_0_0
call_method=run_upgrade
流程应该是相当明显的。每个索引(排除“main”)都被解析为一个版本。因此,升级路径为
0.0.1 -> 0.0.2 -> 0.0.2 -> 0.1.0 -> 0.3.5-ALPHA1 -> 0.3.6 -> 1.0.0
因此,如果有一个现有安装,数据库中的版本为 0.2.0,则会运行从 0.3.5-ALPHA1 开始的所有脚本,以便将其升级到当前版本,该版本可能是至少 1.0.0(尽管它可能是 1.0.1 或更高版本;并非所有升级都需要脚本化更改)。