Редко но бывает, что вместо страницы сайта пользователь видит страницу ошибки. Случай со страницей ошибки 404 я уже рассматривал, теперь пришло взяться за другие ошибки.

Стандартно на странице ошибки показывается код ошибки и краткое описание. Иногда предложение обратится к администратору, но я видел мало случаев, когда пользователи писали, обычно страница просто закрывается.

Для администратора же важно узнать о наличии проблемы и разобраться в ней.

Ошибки 50x

Для примера я взял ошибки 50х, появление которых свидетельствует о проблемах на  сервере.

  • 500 Internal Server Error (Внутренняя ошибка сервера).
  • 501 Not Implemented (Не реализовано).
  • 502 Bad Gateway (Плохой шлюз).
  • 503 Service Unavailable (Сервис недоступен).
  • 504 Gateway Timeout (Шлюз не отвечает).

Одной из причин появления таких ошибок может быть падение php под нагрузкой. К счастью у меня после настройки nginx + WP Super Cache такое бывает очень редко.

Настройка nginx

Для начала нужно заставить nginx выдавать нашу страницу ошибки, вместо стандартной.

Select Code
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root ///;
}

Желательно /путь/к/файлу прописывать отличающийся от пути к сайту, чтобы он был доступен только при наличии ошибки.

В этом примере все ошибки сведены к одному общему файлу. Главное установить факт появления ошибки, а детали потом смотреть в логе сервера.

Файл ошибки

Создаем файл 50x.html и добавляем туда код

Select Code
<html>
<head>
<title>TIgor's BloG : Error 50x page</title>
</head>

<body>
This is an error 50x.

<script type="text/javascript">var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-*********']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();</script>

<script>setTimeout('_gaq.push([\'_trackEvent\', \'Error 50x\', \'Das Error\'])',1000);</script>
</body>
</html>

Самой главной частью страницы является код Google Analytics. Через секунде после открытия страницы будет отправлено событие с сообщением об ошибке.

Я тут потестировал немного, и вот так оно отображается в панеле

Недостатки

Во первых я не нашел в Google Analytics моментальных уведомлений о событиях. Если сайт упадет, то мгновенно об этом узнать не выйдет.

Во вторых наличие ошибок 50х предполагает, что сервер работает неправильно и использовать для уведомления php будет невозможно.

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