Всем привет.
Вам наверняка знакома проблема, что при поиске ошибок в моде/фильтрскриптах на "рабочем" сервере (т.е. на хостинге, с игроками) нужно время от времени вручную вытаскивать логи с хостинга и проверять их на присутствие сообщений об ошибках, которые выдаёт CrashDetect. Данный инклуд призван решить эту проблему: он перехватывает выдаваемые CrashDetect'ом сообщения и отправляет их в Telegram и/или на E-Mail (если будет спрос, в будущем возможна поддержка и других платформ, таких как Discord, VK и пр.) - в таком виде сообщения можно просматривать даже когда нет доступа к основному ПК и быстрее реагировать на них.
Открыть/закрыть
Внимание: Данная разработка не была тщательно протестирована на серверах с 100500 конфигураций и носит исключительно экспериментальный характер. Даже идея инклуда сама по себе чисто экспериментальная.
Плюсы реализации:- Сообщает как об ошибках времени выполнения, так и о падениях сервера.
- Предоставляет исчерпывающую информацию об ошибках:
- Трассировка стека;
- Причина ошибки;
- Зависящая от причины доп. информация (например, при выходе за пределы массива - размер массива и индекс, по которому пытались получить доступ).
- Расширяемость (возможность добавления в будущем новых протоколов для отправки отчётов).
Минусы:- Осуществляет перехват всех выводимых в лог сообщений.
Впрочем, особой роли это играть не должно, ибо при использовании CrashDetect производительность скриптов и без того отходит на второй план.
Сбор информации об ошибках пришлось реализовать именно через перехват логируемых сообщений, поскольку при падении сервера CrashDetect не вызывает OnRuntimeError() (к тому же часть информации он только выводит в логи, не предоставляя функций для её получения в скриптах на Pawn).
- "Велосипед" с собственной реализацией отправки сообщений на E-Mail.
Есть давно всем известный mailer.inc, но он требует более 4Кб свободного места в стеке, и нет никакой гарантии, что оно будет в наличии на момент ошибки. (Это + отсутствие лицензии внутри mailer.inc, из-за чего с юридической точки зрения его использование незаконно без явного разрешения автора).
Требования:- Требует наличие плагина CrashDetect, чтобы логировать ошибки.
- Также зависит от YSF или fixes2 - требуется один из этих плагинов, чтобы перехватывать логируемые сообщения.
- Кроме того, для отправки сообщений через Telegram нужен плагин pawn-requests (для Telegram требуется обращение по HTTPS, в то время как SA-MP умеет только в голый HTTP).
Использование:- Закинуть dc_crashreport.inc в папку с инклудами.
- Если вы хотите получать отчёты об ошибках через Telegram, см. данный мануал.
- Если нужна отправка сообщений на E-Mail:
- В использующем скрипте подключить инклуд dc_crashreport.inc и указать настройки эл. почты (см. ниже).
- Залить файл dc_crashreport_mailer.php на хостинг.
Пример отправки на E-Mail:
// Включаем отправку на эл. почту
#define DC_CRASHREPORT_EMAIL
// URL скрипта, по которому находится скрипт dc_crashreport_mailer.php
// (без префикса "http://" в начале URL).
#define DC_CRASHREPORT_MAILER_URL "example.com/dc_crashreport_mailer.php"
// Укажем адрес, на который будут отправляться отчёты
// Также укажем адрес отправителя (необязательно)
// И, наконец, само подключение инклуда.
#include <dc_crashreport.inc>
Скачать: https://www.dropbox.com/s/oxwkmzfuvo...eport.zip?dl=1
Автор: Daniel_Cortez
Специально для
Pro-Pawn.ru
Копирование данной статьи на других ресурсах без разрешения автора запрещено!