WordPress как на ладони
Дешевый WordPress пакет для разработки Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Своя страница «Ошибка соединения с базой данных»

Периодически бывает нагрузка на сайт и светится пользователю эта ошибка ->
"Ошибка соединения с базой данных"

Подумал почему бы не поменять страницу на свою, и сообщить пользователю свою инфу, как бы чучуть не договорить но дать понять что сайт работает и нужно обновить страницу.

Как всегда пришлось искать на 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

Как вам такая идея?

Напишите свое мнение и советы по улучшению

1
kolshix
438
11 месяцев назад
  • 1
    Kama6918

    Хорошая идея! Правда такую ошибку редко видно. Но почему бы и не сделать ей красивую обработку.

    Там статус 500 нужно возвращать - мелочи но все же... Такую оригинальную страницу смотри тут dead_db()

    П.С. Не против если я из этой заметки статью-заметку сделаю? Правда не знаю когда, когда-нибудь...

    П.П.С На будущее: картинки загружай через кнопку на этом сайте... Сравнительно недавно добавил такую возможность - удобнее и надежнее.

    kolshix 11 месяцев назад

    1 статью конечно делайте ( в интернете полно таких, но они пустые и ограничены 10 строками )
    2 ошибку нужно 503 - в коде указано что ошибка временная, да и сам код направлен на перегрузки сервера, я часто их ловлю и не хочу терять пользователя ,
    3 картинки поправлю, там анимированная должна быть

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация