gpt4 book ai didi

php - CakePHP:使用过滤器部署数据库更改

转载 作者:行者123 更新时间:2023-11-29 01:59:06 24 4
gpt4 key购买 nike

我们需要定期修改生产数据库的结构。在许多情况下,这些更改对应于引用新更改的代码库中的更改。

我们通常会在拉取新更改并运行新 SQL 查询的同时放置一个失败的鲸鱼页面一分钟,但我有兴趣编写一个组件或其他东西来动态运行 SQL 查询,所以不需要停机。

我还没有尝试过,但这是我的计划:

  1. 编写一个组件或其他东西来运行一个或多个特定查询。查询可能会有类似 IF EXISTS 的检查,因此它们只运行一次。我认为它也必须清除模型/持久缓存。
  2. 从 AppController 的 beforeFilter 内部调用上述组件/查询。
  3. 将更改拉入现场(使用上述代码)。
  4. 等待几秒钟,让应用运行一次(由其他用户或我们运行)。
  5. 删除触发 SQL 查询运行的 beforeFilter 代码。

这是一个疯狂的想法吗?这是我的问题:A. 这样的事情行得通吗?B. 有没有更好的方法来做到这一点,我错过了?C. 我需要了解有关模型缓存的哪些信息才能避免抛出错误。据推测,调试级别将设置为 0(因为站点将投入生产)。

顺便提一下,我们不在负载平衡系统上似乎很重要。我们在一个专用服务器上。

最佳答案

Will something like this work?

有点。您可能仍会遭受停机时间。即使在查询完成运行时只是短暂的。如果站点在部署期间流量很大,您也可能会遇到并发问题。

Is there a better way to do this that I'm missing?

使用负载平衡系统,您可以一次更新一个系统,同时将流量转移到另一个系统,直到所有系统都更新为止。

你可以 feature flag你的代码。在启用此功能之前,代码不会运行。因此,启动您的代码,并在数据库更新完成后启用该功能。

What do I need to know about the model caches to keep from throwing errors.

我对缓存不够熟悉,但缓存可以提供站点可用的错觉。但是任何动态请求(表单提交)仍然可能导致错误。

顺便说一句,看看Schema Migrations如果您还没有。

关于php - CakePHP:使用过滤器部署数据库更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19793777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com