Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Yii
Code

Создание своего стартапа: Ведение журнала ошибок

by
Difficulty:IntermediateLength:ShortLanguages:
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Importing With the Google Contacts API
Building Your Startup: Running Multiple Domains

Russian (Pусский) translation by Ellen Nelson (you can also view the original English article)

Final product image
What You'll Be Creating

Этот урок является частью из серии Построй свой стартап с PHP на Envato Tuts+. В этой серии я проведу вас через запуск стартапа, от концепции до реального приложения Планировщик Встречв виде живого примера. На каждом шаге нашего пути, я буду выкладывать код Планировщика Встреч, как пример исходного кода, на котором вы можете учиться. Я также буду затрагивать вопросы связанные с запуском бизнеса, по мере их возникновения.

Введение в журналирование ошибок

Как только Планировщик Встреч перешла в альфа-версию, и люди начали активно использовать его для планирования встреч, стали возникать ошибки, о которых пользователи редко сообщали. Но общаясь с ними по телефону, они обычно рассказывали мне о проблемах, с которыми они столкнулись.

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

Если вы еще не опробовали Планировщика Встреч, запланируйте свою первую встречу. Я общаюсь в комментариях, поэтому скажите мне, что вы думаете! Вы также можете связаться со мной по Twitter @reifman. Мне очень интересно, если вы хотите предложить новые функции или темы для будущих уроков.

Напоминаем, что весь код для Планировщика Встреч написан на фреймворке Yii2 для PHP. Если вы хотите узнать больше о Yii2, ознакомьтесь с нашей параллельной серией Программирование с Yii2.

Давай начнем.

Мой опыт работы с Rollbar

Building Startups Logging - Rollbar Home Page

Оба и Rollbar и Sentry были рекомендованы мне Алексом Макаровым, одним из ведущих разработчиков-добровольцев фреймворка Yii. Алекс очень помог мне расширить свой опыт с Yii2, когда я строил Планировщик Встреч и писал о преимуществах фреймворка.

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

И, несмотря на то, что я получил основы использования некоторых Yii2 плагинов для Rollbar, с открытым исходным кодом (их несколько), я начал с производственных ошибок, которые фактически были вызваны этими плагинами.

Building Startups Logging - Rolbar Integrate Your PHP Application

В целом, меня очень впечатлил веб-интерфейс и сервисы Rollbar. Но я считаю, что есть некоторые проблемы с моей конфигурацией и расширением Yii с открытым исходным кодом, что привело к новым проблемам.

Building Startups Logging - Rollbar List of Errors

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

Чтобы сохранить мои опыт и время, я временно отключил обработку ошибок и решил попробовать использовать Sentry.

Хочу прояснить, я думаю, что с улучшенным расширением Rollbar для Yii2 и более тщательной настройкой (которая никогда не была хорошо документирована сторонними плагинами, подобно этим), сервис работал бы хорошо. Я не хочу отговаривать вас попробовать этот плагин.

Начинаем работать с Sentry

Sentry — сопоставимый сервис регистрации ошибок, хотя и менее дорогостоящий, чем Rollbar. Низкая стоимость часто полезна для стартапов.

Building Startups Logging - Sentry Home Page

Как видите их первый подъем цен начинается всего с 29 долларов в месяц:

Building Startups Logging - Sentry Pricing Page

Регистрируемся

Я пошел вперед и использовал форму «Зарегистрироваться», чтобы начать использовать Sentry:

Building Startups Logging - Sentry Sign Up Form

Создаем новый проект

Специально для Sentry я создал новый проект для Планировщика Встреч для отслеживания ошибок на этом домене:

Building Startups Logging - Sentry Create a New Project Form

Затем Sentry предлагает вам руководства для ряда языков и фреймворков (Yii еще не доступен, намек команде Sentry!):

Building Startups Logging - Sentry Configure Your Application Guide

Настройка плагина Sentry в Yii2

Для Планировщика Встреч я решил использовать расширение Notamedia Yii2 Sentry. Я столкнулся с несколькими незначительными проблемами, которые замедлили меня.

Первая проблема — Не ошибка плагина

Во-первых, мне не удалось найти мои уникальные коды авторизации, чтобы мой сайт идентифицировался с Sentry. Обычно, веб-сервисы делают так, чтобы их было очень легко найти, но мне потребовалось от 10 до 15 минут, чтобы их найти.

В нижней части левого меню страницы Настройки есть опция Клиентские ключи (DSN), которая и отображает их:

Building Startups Logging - Sentry Client Keys DSN

Я разбил ключи на три части и поместил их в свой файл mp.ini — для всех ключей Планировщика Встреч:

Внутри /frontend/config/main.php я обновил рекомендуемые настройки плагина, чтобы использовать мои переменные из mp.ini. Они начинаются с $config:

Вторая проблема

Тогда я не мог заставить Sentry перехватывать сообщения об ошибках. Оказалось, что в документации для плагина notamedia используется URL sentry.com вместо sentry.io. К счастью, я понял это всего за несколько минут и не тратил слишком много времени.

Вступительные письма от Sentry

Sentry действительно отправляет вам вступительное электронное письмо, но я не заметил его, оно пришло позже. Тем не менее, это очень полезно:

Building Startups Logging - Welcome to Sentry Email

Тестируем Sentry с Планировщиком Встреч

В одном из моих контроллеров в моей локальной среде я просто добавил код actionIndex, который будет загружаться при загрузке страницы на сайте:

Очень быстро отчеты об ошибках начали поступать из локальной и производственной среды. Они попадают на панель отчётов Sentry.

Панель отчётов Sentry

Building Startups Logging - The Sentry Dashboard

Вот пример отчёта для одной из моих ложных ошибок: «We have a problem Portland — Портланд, у нас проблема». Тут показаны все полезные данные, которые Sentry собирает для вас, чтобы облегчить обнаружение, происхождение и отладку производственных ошибок:

Building Startups Logging - Sample Error Report in Sentry We have a problem Portland

Выше — вы видите тэги, связанные с URL-адресами и браузером пользователя. Ниже — отчёт показывает строчку кода, вызвавшего ошибку:

Building Startups Logging - 2nd Segment of Sample Error

Как же отображаются куки-файлы и заголовки идентификаторов пользователя:

Building Startups Logging - 3rd Segment of Sample Error

Всё это очень полезно.

Оповещения Sentry о новых ошибках

По умолчанию Sentry также отправляют вам уведомления об ошибках по электронной почте (чтобы вы сразу о них узнали):

Building Startups Error Logging - Sentry Email Bug Report

На самом деле, очень быстро, Sentry показала мне, что хакерский бот WordPress уже пингует мой сайт и ищет wp-login и wp-admin. Хотя ни того ни другого нет, я хочу минимизировать их воздействие. Поэтому я добавил фиктивное действие в интерфейсе SiteController.php, чтобы просто совершать выполнение приложения.

Sentry также обнаружил проблему с правами, которая возникала при кешировании моих фоновых задачах. Это также было полезно.

Пока что, Sentry «купила» меня, и я с нетерпением жду некоторых быстрых результатов, так как проект уже запущен  в работу, под видом версии предрелиза.

Что дальше?

Я надеюсь вам понравилось получать информацию о обработке ошибок и ведению журнала.

Следите за будущим уроками здесь в серии Строим свой стартап с PHP. В этом году я сделал много разработок и доработок. Теперь пришло время привлечь людей использовать Планировщик Встреч. Скоро я напишу о планах продвижения для предварительного просмотра — это еще один ключевой момент запуска вашего стартапа.

Если вы ещё этого не сделали, попробуйте запланировать поделиться Планировщиком Встреч со своими друзьями. И как обычно, я был бы признателен, если бы вы поделились своим опытом в комментариях, а также меня всегда интересуют ваши предложения. Вы всегда можете связаться со мной на Твиттере @reifman.

А так же я приближаюсь к запуску эксперимента с WeFunder, основанного на внедрении новых правил краудфандинга SEC. Вы можете подписаться на наш профиль, если хотите. Я также напишу об этом своим следующем уроке.

Ссылки по теме

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.