如何监视服务器在建立数据库连接时出错

时间:2016-09-15 作者:fortuneRice

我知道有些工具pingdom.comuptimerobot.com 这将监视您的站点并让您知道它们是否停机,但我发现我的WordPress站点遇到可怕的“建立数据库连接错误”的次数比预期的要多,我希望在发生这种情况时得到某种通知(但不是以用户投诉的形式!)。Pingdom和Uptimerobot不认为这是一个错误,因此不会推送任何通知。

是否有任何简单的工具或方法可以监视我的站点以发现特定的问题(或者其他问题)否则可能无法捕获。

[编辑]1。我特别指的是众所周知的WordPress错误,该错误经常由于各种DB连接原因而发生。出现错误时,访问该站点将返回默认的白色页面,其中包含如下所示的文本。

就这个问题而言,我不想知道它为什么会发生,也不想知道如何修复,但我只想知道如何automatically monitor it and get notified. 谢谢

enter image description here

4 个回复
最合适的回答,由SO网友:Rick Curran 整理而成

实际上,您可以使用Pingdom来检查这种错误,而不是直接检查服务器的响应,您可以将检查配置为在页面上查找特定字符串。例如,如果你的页面在主页上有某种一致的文本,那么你可以寻找它。

此Pingdom帖子提供了一些有关检查字符串的信息:

Make the most of your HTTP check: best practice for optional settings

您还可以检查它是否没有特定的字符串,因此如果它显示文本“建立数据库连接时出错”,您应该能够将其标记为关闭。

SO网友:mmm

您可以使用文件覆盖消息wp-content/db-error.php.

然后,您可以在此文件中记录错误或发送电子邮件以警告存在问题。我建议您不要对每个错误都发送电子邮件,因为您可以在几秒钟内收到大量电子邮件。

SO网友:sdexp

您如何连接到数据库?您是否无法捕获向自己发送电子邮件的异常?

对于WordPress,我假设它是PHP,所以。。。

            try {
                    // connect to database
            } catch(PDOException $ex) {
                    $this->output_error_string .= "$ex";
                    mail(/* send mail */);
            }

SO网友:Mark Kaplun

可能有几种不特定于wordpress的外部方法来实现这一点,比如每分钟(或更多)对主页进行一次http获取并检查其内容。甚至可以从本地主机或其他主机执行。

Wordpress方面的解决方案,与@sdexp建议的相反,是覆盖wpdb 通过提供自己的实现(在/wp-content中的wpdb.php文件中)初始化,该实现与核心实现的不同之处在于连接失败时所执行的操作。这显然是wpdb的一个软分支,但该类并没有太大变化,并且巧妙地使用了php魔术方法call, setget 在您的实现中,您可以进一步降低未来失败的可能性。

您的最佳途径仍然是使用外部服务。令人惊讶的是,如果您以前没有做过这样的事情,那么监控就很难做到正确。哪个服务?StackOverflow或ServerFault可能是更好的提问方式,因为这并不是wordpress特有的问题。

相关推荐

古腾堡:如何在ServerSideRender中使用块属性?

我构建了一个带有ServerSideRender组件的小TOC插件。这是一个开源爱好项目,旨在更好地了解古腾堡:https://wordpress.org/plugins/simpletoc/ 现在,我想向块添加属性以切换选项,如;禁用标题;。几个月前,在您的帮助下,我成功地使插件工作,但它发送了;假属性;。就我而言,这只是一个日期。我对ServerSideRender的理解是,该插件通过ajax从php部分获取其内容。但属性保存在标记中。资料来源:https://developer.wordpress.