19 февраля в 20:24

Yii 2.0: релиз расширения Debug 2.0.8

Yii*
Состоялся релиз 2.0.8 расширения Debug для фреймворка Yii 2.0. В него вошли два багфикса и 6 улучшений, включающих новые панели и существенные улучшения старых.

Во-первых, панель timeline, которая уже была довольно полезной для улучшения производительности приложений, стала показывать потребление памяти:



Панель конфигурации теперь показывает информацию о языке:



Была добавлена новая панель routing, показывающая информацию об обработке правил роутинга запроса:



Новая панель user panel показывает различную информацию о залогиненом пользователе:



Спасибо всем, кто принял участи в релизе. Особенно Дмитрию Башкареву и Daniel Gómez Pan.

Полный список изменений, как обычно, можно посмотреть в CHANGELOG.

UPD: выпущена версия 2.0.9, исправляющая ошибки в новых панелях для не стандартных конфигураций приложений. CHANGELOG.
Александр Макаров @SamDark
карма
301,4
рейтинг 8,7
PHP, Yii, Android
Самое читаемое Разработка

Комментарии (34)

  • +3

    Заголовок публикации "Debug 2.0.8" вводит в заблуждение. Предлагаю конкретизировать.

    • +1

      Готово.

  • –8
    не понимаю зачем такие штуки вообще нужны, я думал они уже вымерли, на прод не поставить

    почему не использовать xdebug и профилирование в том же xdebug или xhprof, ну или более современный отладчик который есть из коробки в стабильных версиях php (начиная с 5.6 вроде), http://phpdbg.com/
    • +2
      Это нужно для быстрого анализа при разработке на локалке, а не для мониторинга или профилирования на проде
      • –1
        Так если это локал (дев среда) то xdebug вполне может помочь, потому что если надобилась отладка то надо ковырять, а верить в то что чуть копнем и может бага закроется слишком оптимистично.

        Еще полезный аргумент в пользу посмотреть sql запросы, так почему бы нормально не настроить логирование? и не посмотреть лог.

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

        Еще благодаря таким штукам есть шанс на то что то отвалится, например https://habrahabr.ru/post/322166/#comment_10079130
        • +1

          Это отвалилось не благодаря штуке, а в самой штуке.

          • 0
            Очень интересно когда один из контрибютеров, при возникновение проблемы, для анализа проблемы использует xdebug вместо инструмента который разрабатывается для анализа проблем(отладчик).

            Я не хочу сказать что xdebug нельзя и тд, я просто хочу сказать что любой подобный инструмент (о котором говорится в статье) это лишь очень поверхностный анализ, применение которого довольно ограничено и изучения инструментов вроде xdebug, phpdbg или xhprof вполне может окупится и не будет необходимости в использование других инструментов. (скриншот в таске)

            Я хочу сказать что у разработки в любом случае бывают отладчики и профилирование, для поиска узких или проблемных мест и их использование гораздо более глубое, чем отладка на уровне приложения.
            • 0

              XDebug не позволяет нормально получить картину по производительности (потому что сам её искажает очень сильно). Им совершенно не удобно собирать и анализировать SQL запросы. Да, есть инструменты под каждую СУБД вроде Neor Profiler, но это всё разные инструменты и надо их запускать десяток и читать каждый отдельно, чтобы получить общую картину. К тому же, не всё можно продублировать инструментом уже готовым. Тот же роутинг, например.

              • 0
                вам видней, так как инструмент вы разрабатываете, им пользуются и кому то он нравится и возможно (скорей всего) он упрощает какие то частые действия и людям это нравится.

                Но лично мне удобней, использовать отладчик если я что то отлаживаю или разрабатываю, если мне надо проанализировать sql запросы, мне удобней изменить логирование и проанализировать лог (если я увижу странные запросы, привет отладчик, при этом лог не только на стороне app но и бд если что), если у меня проблемы с производительностью(или что подобное) использовать profiling tool для анализа, а дальше опять привет отладчик чтобы все улучшить.

                Именно этим вызвано мое не понимание к подобным инструментам, я не знаю где его применять, запускать просто если проблема не выявлена то расчехлять инструменты и анализировать там, зачем тогда его изучать? если можно сразу инструментами получить инфу, для мистического экономия времени? так на изучения инструмента уйдет время, помимо этого для другова fw будет другой инструмент(пусть похожий но все же) нет общего стандарта или инструмента и для нового fw изучать новый инструмент, а те подходы что я описал выше, помогают почти всегда, причем даже с разными языками программирования.
                • +1

                  Да там изучать нечего. Один тулбар, пять панелек. Настраивать ничего не надо. В том же Symfony не сложнее. Изучается за вечер, а то и меньше.

                  • 0

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

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

                Ну или я просто не достаточно хорошо знаю ваш инструмент и вы сейчас приведете много удобных примеров, только учитывайте что это будет в группе людей (разработчиков) которые понимают что такое логирование, отладка и профилирование.
                • +1

                  Логирование даёт вам лог и не даёт инструментов для его анализа. Ни тебе графиков потребления памяти, ни времени выполнения, ни всех SQL запросов удобно рассортированных по длительности. То есть либо вы собираете себе какой-то набор для анализа, либо долго и нудно читаете логи, тратя в разы больше времени, чем могли бы...


                  Пошаговая отладка типа XDebug или dbg важна когда нам интересен контекст на каждом шаге. То есть шагнули, подумали, посмотрели переменные текущего контекста и т.д. Когда же нам просто надо посмотреть, как у нас произошло выполнение запроса, остановка на каждом шаге только мешает. Да, есть инструменты типа strace, но пользоваться ими несколько менее удобно. Профайлеры — штука прекрасная, но их надо настроить и уметь использовать. Причём на тот же SQL профайлер один, на PHP другой (да ещё и собирать данные одной тулзой, смотреть другой).

    • +2
      Потому что это удобно и показывает многие вещи специфичные для фреймворка, которых в том же xdebug попросту нет. Те же запросы к базе на порядок проще смотреть в подобных фичах чем выискивать через xdebug
      • 0

        Вообще странно видеть сравнение yii2-debug и xdebug. Из общего у них только слово debug в названии.

    • +1
      Не использую xdebug как минимум потому, что он сильно снижает производительность. А панель дебаггера yii даёт достаточно информации и причём быстро. Без необходимости что-либо настраивать.
      • 0
        начиная с версии 5.6 в комплекте идет phpdbg которые не отключается, просто он не так распротранен и не интегрирован в ide но возможно когда нибудь его интегрируют и как бы никому не мешает и не тормозит.
    • +1
      Это как смотреть atop и ходить по /proc. Второе дает намного больше инфы, но бегло посмотреть первое намного проще и удобнее.
  • +1
    Не спешите обновляться, есть бага.
    Валится serialize если для User используются какой-нибудь behavior в котором получение данных через функцию сделано. У меня сразу в трёх проектах проявилась((
    Панель, конечно, огонь получается. Ещё бы фильтр по используемой памяти сделать в timeline и переключение пользователей. Планируется такое, SamDark?
    • 0

      Какой именно фильтр и что за переключение?

      • 0
        Фильтр — это в просмотре timeline рядом с Duration запипякать, например Memory.
        А переключение — просто возможность из панели переключиться на другого пользователя без авторизации. Часто на работе такое использую, особенно когда надо проверять под разными ролями, т.е. пользователя на которого преключаюсь сразу выбираю с фильтром по ролям.
        • 0

          И то и то интересно и нет, мы об этом не думали. Кидайте отдельными issue или pull request-ами в репозиторий.

          • 0
            Оке, попробую вечерком переработать User. Выкатите, пожалуйста, фиксы 195 и 199, а то ж часто воспроизводимые баги получились, считай ломающие обратную совместимость. У меня это ещё усугубилось огромным количеством залогированных ошибок.
        • +2

          Фильтр по используемой памяти могу добавить. В какой единице измерения удобнее фильтровать?

          • 0
            Наверное в kB, а можно и выбирать единицы kB/MB/GB. Или совсем чтобы приятно — ползунком с логарифмической шкалой.
    • 0
      И не одна бага. Пришлось откатиться обратно.
      • 0

        Похоже, 2.0.9 будет быстрее, чем планировалось :)

      • 0

        Выпустил 2.0.9. Баги поправлены.

    • +1

      Выпустил 2.0.9. Баги поправлены.

      • 0
        Спасибо. А глянь, пожалуйста, у меня такой вариант был решения для проверки панелей на использование. Вроде более универсально.
        • +1

          А зачем прописывать панель и одновременно отключать её?

          • 0
            Типа какая-то панель работает/должна работать в зависимости от окружения или при определенной фазе луны. Как, например, пользователи. При ините чекнули и забыли про неё. Сейчас получается, что конкретно для core-панелей делаем проверку окружения, а кастомные реализации — крутись как хочешь.
            • +1

              Если решает сама панель, подошёл бы метод, а не переменная.

  • +1
    Ура, уж и не ждал возвращения ProfileLogRoute из yii1, да ещё и на стероидах. ))

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.