Метка работоспособности для NetCat 4.72 и особенности работы error_reporting

Если вы занимаетесь сложными проектами, то с определенного момента вы наверняка столкнетесь с необходимостью мониторинга сайта. Многие знают про замечательный pind-admin.ru, который неусыпно следит за работой ваших сайтов, но не многие знают как его правильно настроить.

По-умолчанию pind-admin проверяет работоспособность сайта путем отправки head-запроса. Если ваш сервер завис совсем, вы получите сообщение об ошибке. Однако если, например, упал сервис MySQL, то хоть Apache и выдаст в ответ ошибку php, а head-запрос при этом вернет положительный ответ. Вы не получите сообщение об ошибке. Поэтому, как минимум, следует использовать GET-запрос, причем желательно искать в нем в ответе сервера определенный осмысленный текст.

До недавнего времени мы использовали поиск тега , что довольно логично, но не спасает от ошибок MySQL, например.

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

И тут выяснилось несколько необычных свойств шаблонизатора NetCat версии 4.72:

  • код внутри макетов и компонентов NetCat скорее всего генерит ошибки уровня Notice. Ошибки возникают при использовании любых хэш-массивов (если они оказываются пустыми), а также неопределенных переменных. В общем-то это логично.
  • настройка error_reporting в vars.inc.php работает ммм... не знаю как, я увидел ее работу только на Главной странице сайта, на всех остальных, даже на /index/ эта настройка никак не влияет на поведение сайта.

Итак, сухой остаток. Метка работоспособности ставится в корневой шаблон дизайна вот так:

</body>
</html>

";
// Finar: детектор ошибок для мониторинга работоспособности сайта
$errorDetector = error_get_last();
if (!is_array($errorDetector) || $errorDetector[type] == 8 ) echo "<!--phphnoerrors-->";
echo "

но она не учитывает ошибки уровня Notice, поскольку шаблонизатор NetCat генерит такие ошибки сам по себе.

Update:

Установка на версию 5.x.x:
</body>
</html>

<?
// Finar: детектор ошибок для мониторинга работоспособности сайта
$errorDetector = error_get_last();
if (!is_array($errorDetector) || $errorDetector[type] == 8 ) echo "<!--phphnoerrors-->";
?>

Блог

Что с Мастерхостом? Когда заработает?!

Этот вопрос всё чаще задают в Интернете начиная примерно с 12:00 дня 2 марта. А всё потому, что он накрылся!

далее

Автоматизированная Система Управления Бэкапами

Автоматизированная Система Управления Бэкапами позволяет добиться полного контроля над резервными копиями сайтов внутри инфраструктуры веб-студии. Если вы поддерживаете десятки сайтов на разных хостингах, без подобной системы вы не можете быть на 100% уверены в том, что каждый из них был корректно зарезервирован прошлой ночью.

далее

WebSocket: интеграция с NetCat

Хотите добавить на сайт под управлением CMS NetCat поддержку технологии WebSocket? Обращайтесь к нам! Посетители сайта смогут получать мгновенные уведомления о событиях сайта без обращений к серверу и перезагрузок страниц. Превратите свой сайт в интерактивную площадку, работающую в реальном времени!

далее

NetCat: техническая поддержка и доработка сайтов

Мы работаем с CMS NetCat уже больше 10 лет. У нас большой опыт и ответственный подход к делу.

далее

Весь блог тут