前提・実現したいこと
PHPにてログイン制の予約サイトを作成したい。
発生している問題・エラーメッセージ
ERROR 1129 (HY000): Host ‘0.0.0.0’ is blocked because of many connection errors;
DBの接続エラーが上限に達しているようなので FLUSH HOSTS; で解消自体は出来るのですが、
1時間ほどで再発している状態です。
PHP
PHP
1<?php 2require_once('config.php'); 3require_once('header.php'); 4require_once('footer.php'); 5 6// タイムゾーンを設定 7date_default_timezone_set('Asia/Tokyo'); 8 9//曜日 10$week = array( "(日)", "(月)", "(火)", "(水)", "(木)", "(金)", "(土)" ); 11 12session_start(); 13$_SESSION["visited"] = null; 14$store_code = STORECODE; 15//ログイン済みの場合 16if (isset($_SESSION['EMAIL'])) { 17 try { 18 $pdo = new PDO(DSN, DB_USER, DB_PASS); 19 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 20 } catch (Exception $e) { 21 echo $e->getMessage() . PHP_EOL; 22 } 23 $stmt = $pdo->prepare("SELECT * FROM trn_yoyaku where store_code = ? AND customer_code = ? AND yoyakubi > ? AND delete_flag = 0 AND cancel_flg = 0;"); 24 $stmt->execute([$store_code, $_SESSION['CUSTOMERCODE'], date("Ymd")]); 25 $yoyaku = $stmt -> fetchAll(PDO::FETCH_ASSOC); 26 print_header("マイページ"); 27?> 28 29<body> 30//HTML記述 31 <?php 32 33 //予約したものの一覧を表示する機能 34 foreach ($yoyaku as $row) { 35 $yoyakubi = $row['yoyakubi']; 36 $yoyaku_jikan_from = $row['yoyaku_jikan_from']; 37 $print_yoyakubi = date('Y年m月d日', strtotime($yoyakubi)); 38 $youbi = date('w', strtotime($yoyakubi)); 39 $print_yoyaku_jikan_from = date('H:i', strtotime($yoyaku_jikan_from)); 40 echo $print_yoyakubi; 41 echo $week[$youbi]; 42 echo " " . $print_yoyaku_jikan_from; 43 echo "<br>"; 44 } 45 $pdo = null; 46 $stmt = null; 47 $yoyaku = null; 48 ?></p> 49 </div> 50 </div> 51 52 53 <div class="menu_btn"> 54 <a href="menu.php"><i class="fab fa-elementor"></i> メニューページへ</a> 55 </div> 56 <div class='logout'> 57 <a href='logout.php'>ログアウト</a> 58 </div> 59 </div> 60 </form> 61 </div> 62<?php 63 print_footer(); 64}else { 65//以下ログイン画面 66}
試したこと
・DBコネクションを明示的に閉じる。
体感のエラー発生頻度は変わらず。
・エラーログの確認
エラーログに記載はなし。
・アクセスログの確認
アクセスは全く無くサイトをブラウザで開いていない間にもエラーが発生している。
・時間帯別のエラー発生率
15時から20時くらいにかけてエラー発生頻度が高くなる。
※それ以外の時間帯は1時間~3時間で再発
・.htaccessの見直し
リダイレクトループは発生していない。
・DBのmax_connect_errorsの確認
デフォルト値の100。
補足情報(FW/ツールのバージョンなど)
PHP 5.6.40