てくてくあるく

WordPress の テーマ とか プラグイン に ついて 勉強しています

僕のサイトのような へっぽこサイトじゃ 問題ありませんが
例えば ツイッターとかで 拡散されて 急激なアクセスによって DBが止まったりしたら
データベース接続確立のエラー が 表示されます

このページ データベース接続確立のエラー としか 表示されないので
少しカスタマイズをしてみようかと思います!!

memobitsを参考にさせていただきました。
http://m.designbits.jp/12090710/
メンテナンス ページ の カスタマイズ
https://tekuaru.jack-russell.jp/2015/03/14/32/

また エラーページが表示されたら 自分宛てに
メールを送るようになっていますので
書き換えて 使ってみてください

書き換える内容は

$diff_fime
アラートメールが アクセスのたびに送られないように
前回の時間から 60(秒) × 5(分) 過ぎていれば メールを 送る 設定値です
$set_mail = array(
‘to’ => ‘[email protected]’,
‘header’ => ‘From: ‘ . ‘WordPress <wordpress@’ . $_SERVER[‘SERVER_NAME’] . ‘>’ . PHP_EOL .
‘BCC: ‘ . ‘[email protected]’,
‘subject’ => ‘WP DB ERROR : ‘ . $_SERVER[‘SERVER_NAME’],
‘body’ => ‘データベース接続確立エラーページが表示されました。’ . PHP_EOL . PHP_EOL .
‘データベースサーバーが動作中か確認してください。’ . PHP_EOL . PHP_EOL .
‘アクセス元URL : ‘ . ( empty( $_SERVER[‘HTTPS’] ) ? ‘http://’ : ‘https://’ ) . $_SERVER[‘HTTP_HOST’] . $_SERVER[‘REQUEST_URI’],
);
‘to’ は 送り先
‘header’ は 送り元 や CC BCC 等
‘subject’ は 件名
‘body’ は 本文
と なっています

db-error.php という 名前で
wp-content の 中に ファイルを 入れると動くように なります

<?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>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="format-detection" content="telephone=no,address=no,email=no">
  
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
  <script src="//oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
  <script src="//oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
  
  <title>503 Error : Service Unavailable</title>
  
  <meta name='robots' content='noindex,follow' />
</head>
<?php
  
  $diff_fime = 60 * 5;
  $file_dir  = $_SERVER['DOCUMENT_ROOT'].'/resources/logs/db-error.txt';
  
  $last_time = file( $file_dir, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES );
  
  if ( (int)array_pop( $last_time ) + $diff_fime < time() ) {
    
    file_put_contents( $file_dir, PHP_EOL . time(), FILE_APPEND | LOCK_EX);
    
    $set_mail = array(
      'to'      => '[email protected]',
      'header'  => 'From: ' . 'WordPress <wordpress@' . $_SERVER['SERVER_NAME'] . '>' . PHP_EOL .
                   'BCC: ' . '[email protected]',
      'subject' => 'WP DB ERROR : ' . $_SERVER['SERVER_NAME'],
      'body'    => 'データベース接続確立エラーページが表示されました。' . PHP_EOL . PHP_EOL .
                   'データベースサーバーが動作中か確認してください。' . PHP_EOL . PHP_EOL .
                   'アクセス元URL : ' . ( empty( $_SERVER['HTTPS'] ) ? 'http://' : 'https://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],
    );
    mb_language( 'ja' );
    mb_internal_encoding( 'UTF-8' );
    mb_send_mail( $set_mail['to'], $set_mail['subject'], $set_mail['body'], $set_mail['header'] );
    
  }
  
?>
<body class="container">
  
  <div class="jumbotron" style="margin-top: 30px;">
    
    <h1>503 Error : Service Unavailable</h1>
    
    <h2>ただいまサイトが大変混み合っております</h2>
    
    <br><br>
    
    <p class="lead">しばらく待ってから、再度お試しいただけますようお願い致します。</p>
    
  </div><!-- /.jumbotron -->
  
<?php if ( isset ( $_GET['admin'] ) || isset ( $_GET['err'] ) ) { ?>
  
  <div class="jumbotron">
    
    <h1>データベース接続確立エラー</h1>
    <p class="lead">これは wp-config.php ファイルのユーザー名とパスワード情報が間違っているか localhost_ のデータベースサーバーに接続できないかのどちらかを意味します。</p>
    <p class="lead">ホストのデータベースサーバーがダウンしているかもしれません。</p>
    
  </div><!-- /.jumbotron -->
  
  <div class="well">
    
    <ul>
      <li>ユーザー名とパスワードか正しいか確認してください。</li>
      <li>正しいホスト名を入力しているか確認してください。</li>
      <li>データベースサーバーが動作中か確認してください。</li>
    </ul>
    
  </div><!-- /.jumbotron -->
  
<?php } ?>
  
</body>

<style>
/* ここに スタイルを 書きます */
</style>

<script>
/* ここに JSを 書きます */
</script>

</html>

Related Article

OS X El Capitan の 気になったところ まとめ

詳細へ »

OS X El Capitan だと Outlook 2016 for Mac が フリーズ してしまう

詳細へ »

MAMP を アップデート したら cakePHP の アップデート が できなくなった !?

詳細へ »