问题是,如何更新常量?这听起来像是一个愚蠢的问题,但让我们看一下我的问题的背景:
我管理一个服务器网络,其中包括一个MySQL服务器,多个HTTP服务器和一个Minecraft服务器(一个自托管服务器,安装了Minecraft的游戏玩家可以连接并一起玩)。所有用户端服务(HTTP服务器,Minecraft服务器,用户应用程序)都与MySQL服务器直接或间接相关。 MySQL数据库为每个玩家账户存储不同的数据,例如,玩家的在线/离线状态等。
在编程中,常量用于创建对运行时不会更改的值的常规引用。特别是对于软件内部标识符,例如数据标志,位掩码等。在我的例子中,我还使用常量来存储特定数据,例如MySQL服务器的地址和其他凭证。因此,当我想更改服务器地址时,我只需要从一个点修改它们,例如,服务器的内部constants.php
。
0x01
标志,如果玩家是主持人,他有0x10
标志,0x11
如果是VIP和主持人,反之亦然。我也想重构位掩码值,但这会很麻烦,因为我需要关闭所有服务器并更新MySQL值,更新每台服务器上的常量,然后重启所有服务器,以避免在此期间出现潜在的安全漏洞更新。有没有更方便的方法呢?这也是一个网络管理问题,但我认为它与编程有关。
答案 0 :(得分:1)
我们谈论的是部署系统。例如,我们可以使用 capistrano:https://github.com/capistrano/capistrano。我们要 将constants.php保存到git并在capistrano中创建任务以进行部署 这个文件到每个服务器。我使用这个工具来部署项目,这些项目是俄罗斯互联网上最繁忙的50个站点之一:)
我们谈论的是数据迁移。所以有几种方法。其中一些有停机时间而有些没有(有时取决于具体情况)。
无停机的数据迁移: