【问题标题】:Correct way to handle maintenance mode from a Database setting从数据库设置处理维护模式的正确方法
【发布时间】:2014-08-10 15:07:30
【问题描述】:

构建 CMS 并寻找向用户显示维护模式消息的正确方法。

我的计划是在我的管理后端提供选项。我的数据库中已经有用于网站配置的表,并且我有一个只有值的字段。我在正常模式下使用 1,在维护模式下使用 2。我只是希望能够更新数据库。

但是,我的问题是,这样做的正确方法是什么?

我的第一个想法是检查数据库,然后如果值为“2”,我会将用户(所有 PHP)重定向到例如503.php。

但我也看到更好的方法是在 .htaccess 中,然后我可以允许某个 IP 仍然可以访问。但是 .htaccess 中的这个可以通过数据库检查来管理吗?

希望以“标准”的方式正确地做事。

我的第一个建议可行吗? “维护模式”的主要原因其实是为了保护自己。我的网站已经通过了大量的测试,但我想要一种方法可以在我解决任何问题的同时快速关闭对网站的访问(SEO 友好)。或者在我更新网站本身时。

谢谢

【问题讨论】:

  • 也许做一个 cron 工作来检查每分钟数据库中的值是什么。如果是true,请编辑 .htaccess 文件以包含除您之外的所有 IP 的 503。
  • 这确实是一个基于意见的问题。一个人定义的“维护模式”可能与另一个人完全不同。您在谈论您想要的行为或您的系统架构时也没有真正具体,这可能允许其他选项(例如从负载均衡器中删除正在维护的主机)。
  • 刚刚对我的问题添加了一些更新。谢谢。
  • 你为什么不直接使用源代码控制呢?这样您就可以在本地工作并在修复后完成更改。
  • 对 SEO 最友好的维护方式是进行部分维护。您通常不需要关闭整个站点。也像其他人所做的评论一样:如果之前的测试没有解决问题,请将站点切换回以前的版本,在第二台主机上测试,然后重新部署下一个版本。那通常是没有停机时间的。

标签: php .htaccess http-status-code-503 maintenance-mode


【解决方案1】:

如果没有必要,您不应该从数据库控制维护模式设置。

数据库增加了另一层复杂性,在某些时候可能会失败。

在实践中,您有几个选择:

  1. 添加一个包含维护模式设置的文本文件。在处理请求之前,使用 PHP 打开并读取文件的值。然后,如果需要,您可以通过发出重定向来适当地处理它。

  2. 使用Pingometer 等外部服务来监控您的站点。这会自动执行该过程,如果其中任何一个出现故障,请使用其 Web 挂钩功能向 PHP 脚本发送请求,该脚本将该值(可能使用 #1 中描述的方法)切换到维护模式。

    李>

我认为您的目标是,如果网站(外部)发生这种情况,您的维护模式会自动跳闸——#1 和 #2 提供了一个简单的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 2017-01-09
    • 1970-01-01
    • 2011-01-28
    相关资源
    最近更新 更多