Sentry.io: обработка ошибок
Ошибки при обработке запросов могут привести к негативному отношению со стороны покупателей на сайте или сотрудников CRM вашей компании. С помощью модуля «Sentry.io: трекер ошибок и монитор производительности» вы сможете записывать ошибки, группировать схожие и получать уведомления о появлении проблем. Информация об ошибке поможет разработчикам сайта исправить проблему и сформировать обращение в техподдержку 1С-Битрикс.
Особенностью модуля от нашей компании является поддержка стандартного окружения BitrixVM. Вам не потребуется вносить изменения в конфигурацию сервера с современными версиями 1С-Битрикс для мониторинга ошибок.
Сегодня разберем примеры ошибок, с которыми можете столкнуться.
Переход к PHP 8
При переходе к версии PHP 8 усилен контроль типов аргументов встроенных функций. Шаблоны и компоненты, разработанные для более старых версий PHP, могут не учитывать граничные ситуация отсутствия данных. Например, товары без изображений или под заказ.
Примеры сообщений:
- array_keys(): Argument #1 ($array) must be of type array, null given
- count(): Argument #1 ($value) must be of type Countable|array, null given
- array_key_exists(): Argument #2 ($array) must be of type array, null given
- in_array(): Argument #2 ($haystack) must be of type array, null given
- array_merge(): Argument #2 must be of type array, bool given
- Cannot access offset of type string on string
Для решения потребуется адаптировать код шаблона к современным требованиям.
Нужна помощь в адаптации шаблона →
Падение базы данных и кеша
При достижении ограничения оперативной памяти и объема дискового пространства процесс базы данных MySQL может стать недоступен, что приведет к фатальному исключению создания страницы. При использовании кеша в Memcached или Redis в случае падения сайт продолжит работу, но время формирования создания страницы увеличиться.
Примеры сообщений:
- Mysql connect error [localhost]: (2002) Connection refused
- Mysql connect error [localhost]: (2006) MySQL server has gone away
- Memcache::pconnect(): Can't connect to unix:///tmp/memcached.sock:0, Connection failed: Connection refused (111)
Для решения потребуется проанализировать распределение ресурсов сервера, внести изменения в конфигурацию.
Ошибки призраки
Исключения при попытке записи ошибки в лог и при окончании буферизации могут отображаться в виде пустой страницы, что приводит к сложностям в отладке. Проблему обновления пакета psr/log разобрали в отдельной статье.
Сообщение об ошибке «ob_start(): Cannot use output buffering in output buffering display handlers» часто является свидетельством двух ошибок:
- Использования буферизации внутри Отложенных функций или обработчиках события OnEndBufferContent.
- Исключение на странице, которое вызвало экстренное завершение буферизации.
Примеры сообщений:
- Declaration of Bitrix\Main\Diag\Logger::log($level, Stringable|string $message, array $context = []): void must be compatible with Psr\Log\LoggerInterface::log($level, $message, array $context = []) in ..../bitrix/modules/main/lib/diag/logger.php
- ob_start(): Cannot use output buffering in output buffering display handlers
партнёр
Битрикса
на рынке
в течение
30 минут
человек
в штате
Золотой
партнёр
Битрикса
9 лет
на рынке
Реагируем
в течение
30 минут