データベース接続確立エラーが発生したときに表示されるメッセージを使ってユーザビリティを上げてみる。

By | 2017年8月5日 , Last update: 2017年8月16日

はじめに

レンタルサーバを借りてWordpressを使ってWebサイトを運用していると、何らかの理由(サーバのリソース不足やデータベースの移転作業等)でデータベース(MySQL,MariaDB)が止まる(または止めなければならない)ということがあると思います。

そのような状態で、httpdにアクセスがあると、以下のような画面が表示されることがあります。

これが表示されてしまうと、見に来てくださったお客さんは「このサイトはダメだな。」と思いながら、ブラウザの「戻る」ボタンを押して、同じような情報を持っている次のWebサイトへと向かうことになります(たぶん)。

そこで、本記事ではエラーメッセージとして表示される文言をちょっと工夫することで、ユーザビリティの向上を図ることにしましたので、その方法について書いていきます。

スポンサーリンク

具体的な方針

具体的に何をするのかというと、以下のようなことをします。

「エラーメッセージに自分が管理しているサイト等へのリンクを設定する。」

単純な対策ではありますが、「データベースに接続できない」という条件がありますので、HTMLとCSSだけでできる対策ということになると、これが一番工数(というと大げさかもしれませんが、)と効果のバランスの良い方法だとおもいます。

本サイトの場合は、説明用の動画を置いているYouTubeのチャンネルがありますので、そちらへのリンクをエラーメッセージの中に入れます。

db-error.phpを書く。

方針が決まったところで、db-error.phpを書いていきます。

実際にGoogle先生等で検索してみるとわかるのですが、”db-error.php”という検索語を入れないと、「『データベース接続確立エラー』が表示されたときの対応策」はたくさんヒットするのですが、「『データベース接続確立エラー』を表示するページ自体をカスタマイズする方法」は意外にヒットしません。

そんな中でも検索結果としてヒットしたページを参考にさせていただいて、以下のようなPHPのスクリプトを書いてみました。

<?php
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 600');
?>
<!DOCTYPE HTML>
<html>
<head>
<title>データベースエラーが発生した模様です。</title>
<style>
body { padding:20px; background:#ffffff; color:#000000; font-size:14pt; }
h1 { border-left: 8px solid #1e3e8a; padding-left: 8px; }
</style>
</head>
<body>
<h1>データベースエラーが発生した模様です。<br/>Some errors in the database!!</h1>
<p>Webサーバからの情報によりますと、データベースからデータを取得できなくなっている模様です。(´・ω・`)</p>
<!-- 以下のコードは「panda大学習帳」用のものですので、利用中のサイトに合わせて変更が必要です。 -->
<!--
<p>なお、YouTubeのチャンネル(<a href="https://www.youtube.com/channel/UC2CV_cEjBd81csrHy24Kytg">pandanote.infoチャンネル</a>)はおそらく営業しておりますので、復旧までの間、<a href="https://www.youtube.com/channel/UC2CV_cEjBd81csrHy24Kytg">こちら</a>でお楽しみいただければ幸いです。</p>
<p>以上、ご迷惑及びご不便をおかけいたしますが、ご理解とご協力をお願い申し上げます。</p>
<p>panda大学習帳 - pandanote.info</p>
-->
</body>
</html>


スポンサーリンク

上記のファイルをWordpressのインストール先のディレクトリ(通常は/usr/share/wordpress)の下のwp-contentの下に置きます。

試運転をする。

ここで、MariaDBをわざと止めて、適当なURLにアクセスしてみます。

すると、以下のように表示されます。

上記のように表示されていれば成功です。

まとめ

そもそもデータベースへの接続エラー自体は本来は起こしてはならないものではありますが、サーバのリソースの逼迫による移転のための作業間合いが必要などの理由で止めざるを得ないことはあると思います。そんなときに、本記事で取り上げた対策がエラーページに行われていることで、見に来てくださったお客さんのユーザビリティをできるだけ下げないようにするだけでなく、エラーメッセージにネタ的要素を付加することで、「データベースが復旧したら、また見に来よう。」と思わせる効果を出すことができるものと確信しています。

この記事は以上です。