WordPress エラー 「データベースに接続できません」の時にメールで通知する方法

Wordpressの場合、「/wp-content/db-error.php」というファイルがあると、DBに接続できないときはdb-error.phpを呼び出して表示します。

そこで、そこに、メールを送信するPHPコードを書くことによって、通知しましょうという乱暴?な方法です。

以下db-error.phpのサンプル。
このままだと、アクセスがあってこのページが表示されるかぎり、メールがばんばん送信されてしまいます。

<?php
header( 'HTTP/1.1 503 Service Unavailable' );
header( 'Expires: Wed, 11 Jan 1984 05:00:00 GMT' );
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
header( 'Cache-Control: no-cache, must-revalidate, max-age=0' );
header( 'Pragma: no-cache' );
header( 'Content-Type: text/html; charset=utf-8' );
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>データベースエラー</title>
</head>
<body id="error-page">
<h1>503 Service Unavailable - DB Error</h1>
<p>ただいまサーバのデータベースに接続できないようです。<br />
数分後に再度リロードしてみてください。</p>
<p>ご不便おかけしますが、よろしくお願いいたします。</p>
</body>
</html>
<?php

//宛先
$to = "name@example.com";
//差出人
$header = "From: "."name@example.com";
//件名
$subject = "blog.example.com WP DB ERROR";
//本文
$body .= "blog.example.com WP DB ERROR";

if(mb_send_mail($to,$subject,$body,$header)){
   //echo "メール送信成功しました。";
}else{
   //echo "メール送信失敗しました。";
}
?>

※宛先等は書き換えてください。

検索エンジンとかにインデックスされると困る状態だと思うので、503(メンテナンス中)を返すようにしています。

バリューサーバーを2013/09から利用してるのですが、今まで2度メールで通知されました。

・2013/10/16(水) 21:29
・2014/6/6(金) 18:46

どちらもメールに気づいてサイトを確認しにいったら普通に表示されていたので、一時的なものだったようです。

WPのデータベースを自動で最適化する方法

あと、メール送信の前に、PHPコードでデータベースの最適化をするロジックも書いています。


■参考
Custom WordPress Database Error Page | AppThemes Docs
お手軽WordPress Tips:データベース接続エラー時に表示するメッセージを変える(といいよって教わった - かちびと.net
WordPress のデータベースエラーページをカスタマイズ | dogmap.jp

検索で調べると、格安?のVPSでは、起こり得る現象?

service mysqld stop
mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
service mysqld start

 つまり、こいつ「mysql.sock」が問題のようです。
WordPressのサイトで「データベース接続確立エラー」が出たら | 日常って、なんだっけ。


【MySQL】WordPressでデータベース接続エラーが出たときの対処法 | くずのは探偵事務所
WordPress › フォーラム » データベース接続確立エラー→mysqlが起動しない
データベース接続確立エラーからの10日間の黒画面との闘い » 地上8階の夏休み.

スポンサーリンク

コメントを残す

メールアドレスは公開されません。
また、コメント欄には、必ず日本語を含めてください(スパム対策)。