Своя страница «Ошибка соединения с базой данных»
Периодически бывает нагрузка на сайт и светится пользователю эта ошибка ->
"Ошибка соединения с базой данных"
Подумал почему бы не поменять страницу на свою, и сообщить пользователю свою инфу, как бы чучуть не договорить но дать понять что сайт работает и нужно обновить страницу.
Как всегда пришлось искать на ENGLISH - в итоге нашел на русском , с ссылкой на оригинал, вот что получилось набросать.


<?php
// custom WordPress database error page
// Edit by Kolshix
// УСТАНОВКА - добавить файл "db-error.php" в папку "ВАШ_САЙТ_РУ/wp-content/" при ошибке базы данных вордпресс обращается в эту папку - если файла "db-error.php" нет, будет указана стандартная страница WORDPRESS
// вариации ошибок
// 500 программное обеспечение работает, но есть серьезные внутренние проблемы, которые мешают запросам правильно обрабатываться.
// 503 свидетельствует об образовании большой очереди запросов на сервере - когда перегружен сервер могут быть неполадки с соединением к БД, а это как раз та ошибка
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 600'); // 1 hour = 3600 seconds // информируем бота что нужно попробовать ещё раз через установленное время
// Уведомление на email
// mail("your@email.com", "Database Error", "There is a problem with the database!", "From: Db Error Watching");
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Database Error</title>
</head>
<body>
<center>
<script>
setTimeout("window.location.reload()", 9000); // время перезагрузки
</script>
<h1>Error Connection</h1>
<style>
a.button {
color: white;
text-decoration: none;
user-select: none;
background: rgb(76, 144, 232);
padding: 9px;
outline: none;
border: 3px solid #3d6ea0;
border-radius: 10px;
}
a.button:hover { background: rgb(86, 218, 72); }
a.button:active { background: rgb(76, 144, 232); }
</style>
<script type="text/javascript">
function timer(){
var obj=document.getElementById('timer_inp');
obj.innerHTML--;
if (obj.innerHTML==0){
setTimeout(function(){},1000);
} else {
setTimeout(timer,1000);
}
}
setTimeout(timer,1000);
</script>
<h1><div>Wait: <span id="timer_inp">9</span> Or <a href='<?php echo "http://".$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"]; ?>' class="button">Refresh</a></div></h1>
<img itemprop="url" src="/err_c.gif" width="300" height="300" >
</center>
</body>
</html>
Поставил таймер и кнопку для нетерпеливых и параноиков с отключенным JS
Украсил максимально просто - можете сделать под свой вкус.
При добавлении к себе на хост нужно: добавить свою картинку и сделать сжатие JS и CSS
Как вам такая идея?
Напишите свое мнение и советы по улучшению
Хорошая идея! Правда такую ошибку редко видно. Но почему бы и не сделать ей красивую обработку.
Там статус 500 нужно возвращать - мелочи но все же... Такую оригинальную страницу смотри тут dead_db()
П.С. Не против если я из этой заметки статью-заметку сделаю? Правда не знаю когда, когда-нибудь...
П.П.С На будущее: картинки загружай через кнопку на этом сайте... Сравнительно недавно добавил такую возможность - удобнее и надежнее.
1 статью конечно делайте ( в интернете полно таких, но они пустые и ограничены 10 строками )
2 ошибку нужно 503 - в коде указано что ошибка временная, да и сам код направлен на перегрузки сервера, я часто их ловлю и не хочу терять пользователя ,
3 картинки поправлю, там анимированная должна быть