我的公司开发了一个 cms,但现在我们使用它一段时间后,我们偶然发现了一个问题:所有的变化都与现场环境直接相关。如果您想对站点进行大修,有时您希望先完成所有工作,然后一次将所有更改发布到实时站点。
我现在谈论的是内容,而不是用于开发软件的开发/测试/登台/生产环境
我已经看到了几种解决问题的方法,但没有一个可以完全解决这个问题:
- 使用版本控制:版本 x 在生产中运行,y 在暂存;
- 使用草稿/发布标志:所有草稿内容都远离实时站点;
- 使用两个数据库:一个用于暂存环境,一个用于实时环境。
他们都有问题:
- 版本控制对于新创建的页面(生产时版本为空?)和页面站点地图的更改(我们为此使用嵌套集)是有问题的;
- 对于草稿,无法创建已发布页面的第二个版本;
- 使用第二个数据库,您必须复制/同步您不希望在两个地方之间有所不同的所有数据:用户、用户组、权限等。
还有其他选择吗?最好您想在用户杠杆上执行此操作,以便用户 A 可以开始大修,而用户 B 仍然能够发布新内容。但也许现在这太难了,我们现在只需要解决第一个问题。
PS。它是一个带有 MySQL 后端的 php、ZF 应用程序,但这对于我认为的架构来说并不重要。