1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zhuyajie-phalcon-debugbar

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_zh.md 15 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 16.03.2025 12:12 1c993b9

Инструмент отладки Phalcon Debugbar

Безопасный инструмент для отладки/анализа приложений на основе Phalcon Framework.

Основные возможности

  1. Сбор информации для отладки обычных запросов.
  2. Сбор информации для отладки AJAX-запросов.
  3. Отладка переадресаций.
  4. Поддержка хранения данных отладки: локальный файл, MongoDB, Elasticsearch.
  5. Поддержка многомодульных, односмодульных и микрослужебных приложений.
  6. Хранение данных по сессиям, что позволяет нескольким пользователям работать в одном тестовом окружении без взаимопревращения данных отладки.
  7. Инструмент отладки можно использовать независимо от основной страницы, доступен по адресу /debugbar/open.
  8. Интеграция с Whoops, которая обеспечивает сбор всех данных до возникновения ошибки.
  9. Поддержка версий Phalcon 1.3.x, 2.x, 3.x и PHP 5.5~7.1.### Данные, собираемые коллекционерами- MessagesCollector: Вручную собирает отладочные данные, специально выбрасываемые приложением
  • TimeDataCollector: Вручную измеряет время выполнения участка кода
  • ExceptionsCollector: Вручную отображает информацию о захваченных исключениях
  • MemoryCollector: Автоматически собирает информацию о потреблении памяти
  • QueryCollector: Автоматически собирает все данные SQL-запросов, время выполнения каждого запроса и информацию EXPLAIN для SELECT-запросов
    • Информация собирается из сервиса db. Поддерживает только встроенную систему ORM Phalcon
  • DoctrineCollector: Автоматически собирает все данные SQL-запросов и время выполнения каждого запроса
    • Информация собирается из сервиса entityManager. Поддерживает только ORM Doctrine
  • RouteCollector: Автоматически собирает информацию о маршрутах текущего запроса: конфигурация маршрутов, результат анализа маршрутов и тело действия, запущенного маршрутом
    • Информация собирается из сервиса router.
  • ViewCollector: Автоматически собирает информацию о рендере представлений, включая все используемые шаблоны, время рендера, тип движка и переменные шаблонов
    • Информация собирается из сервиса view.
  • PhalconRequestCollector: Автоматически собирает глобальные данные запроса: заголовки запроса, cookie, серверные переменные, заголовки ответа, параметры запроса, данные формы, сырое содержимое запроса
    • Информация собирается из сервиса request.- ConfigCollector: Отображает информацию о конфигурации
    • Информация собирается из сервиса config.
  • SessionCollector: Собирает данные сессий
    • Информация собирается из сервиса session.
  • LogsCollector: Автоматически собирает логи, поддерживающие встроенные компоненты логгирования Phalcon и Monolog
    • Информация собирается из сервиса log.
  • CacheCollector: Автоматически собирает детали операций кэширования: включая информацию о сохранении, получении, увеличении, уменьшении и неудачах, а также подробности данных до и после операций
    • Информация собирается из сервиса cache.
  • SwiftMailCollector: Собирает информацию о электронной почте
    • Информация собирается из сервиса mail.

Быстрый старт### composer

  • Установка

    php composer.phar require --dev snowair/phalcon-debugbar
  • Обновление

    php composer.phar update snowair/phalcon-debugbar

Изменение файла index.php

  1. Сохраните экземпляр приложения в службе app:

    // Сначала создайте $di экземпляр
    $application = new Phalcon\Mvc\Application($di); // передайте $di как аргумент конструктора для Micro приложения также: new Phalcon\Mvc\Micro($di);
    $di['app'] = $application; // Сохраните экземпляр приложения в службе app $di
  2. Для запуска debugbar используйте следующий код до метода handle(), например:

    (new Snowair\Debugbar\ServiceProvider())->start();
    // После запуска debugbar немедленно обработайте приложение.
    echo $application->handle()->getContent();
  3. Необязательно Включите Whoops, измените index.php, после запуска debugbar добавьте следующий код:

    (new \Snowair\Debugbar\Whoops\WhoopsServiceProvider($di));

Изменение кода управления доступом

Следующий код управления списками правил (ACL) применим для INVO:

public function beforeDispatch(Event $event, Dispatcher $dispatcher)
{
    $auth = $this->session->get('auth');
    if (!$auth){
        $role = 'Guests';
    } else {
        $role = 'Users';
    }

    $controller = $dispatcher->getControllerName();
    $action = $dispatcher->getActionName();

    /* Debugbar start */
    $ns = $dispatcher->getNamespaceName();
    if ($ns == 'Snowair\\Debugbar\\Controllers') {
        return true;
    }
    /* Debugbar end */

    $acl = $this->getAcl();
    $allowed = $acl->isAllowed($role, $controller, $action);
    if ($allowed != Acl::ALLOW) {
        $dispatcher->forward(array(
            'controller' => 'errors',
            'action'     => 'show4i1'
        ));
        $this->session->destroy();
        return false;
    }
}
```### Долговременное хранение данных

Дебажные данные каждого запроса могут быть сохранены для анализа системы.

* Для **file** драйвера, отладочные данные по умолчанию сохраняются в директории `Runtime/phalcon`. Если эта директория не существует, она будет автоматически создана. Вы можете указать другую директорию в конфигурационном файле.

* Для **mongodb** драйвера, требуется установка расширения **mongodb**, а также mongodb phplib: `composer require mongodb/mongodb`.

* Для **elastic** драйвера требуется установка phplib: `composer require elasticsearch/elasticsearch:some-version`.

### О базовой URI

Обратите внимание на настройку baseUri, ваш URI-сервис должен иметь правильную настройку baseUri. Затем:

* Если вы используете Apache, вам просто нужно добавить соответствующий `.htaccess` файл в директорию baseUri, как указано в официальной документации.

* Если вы используете Nginx, вам потребуется правильно настроить блок location, например:

    ``` 
        location @rewrite {
            # Замените 'baseuri' на фактическое значение baseUri вашего проекта
            rewrite ^/baseuri/(.*)$ /baseuri/index.php?_url=/$1;
        }
    ```

## Советы

### Использование внешнего файла конфигурации для удобства обновлений через composer

Скопируйте файл `config/debugbar.php` внутри пакета в каталог конфигурации вашего проекта, затем отредактируйте его и используйте следующую команду:

(new Snowair\Debugbar\ServiceProvider('путь_до_вашего_файла_конфигурации_debugbar'))->start();

\PhalconDebug::startMeasure('start-1', 'время выполнения'); // startMeasure(идентификатор внутренней переменной для остановки меры, метка) \PhalconDebug::addMeasurePoint('начало'); // Измерение времени с последней точки замера до настоящего момента. \PhalconDebug::addMessage('это сообщение', 'метка'); // Добавление сообщения с использованием пользовательской метки. \PhalconDebug::info($var1, $var2, $var3, ...); // Добавление множества сообщений за один раз. Смотрите PSR-3 для других методов названий (debug, notice, warning, error, ...) \PhalconDebug::addMessageIfTrue('1 == "1"', 1 == '1', 'метка_пользователя'); // Добавляет сообщение только если второй параметр истинен \PhalconDebug::addMessageIfTrue('не будет показано', 1 == '0'); \PhalconDebug::addMessageIfFalse('1 != "0"', 1 == '0'); // Добавляет сообщение только если второй параметр ложен \PhalconDebug::addMessageIfNull('условие является null', Null); // Добавляет сообщение только если второй параметр является null \PhalconDebug::addMessageIfEmpty('условие является пустым', $condition); // Добавляет сообщение только если второй параметр пустой \PhalconDebug::addMessageIfNotEmpty('условие не является пустым', $condition = [1]); // Добавляет сообщение только если второй параметр не пустой \PhalconDebug::addException(new \Exception('ах, ошибка')); \PhalconDebug::addMeasurePoint('окончание'); \PhalconDebug::stopMeasure('start-1'); // stopMeasure(идентификатор внутренней переменной для остановки меры) ### Функции шаблонов Volt addMessage addMessageIfTrue addMessageIfFalse addMessageIfNull addMessageIfEmpty addMessageIfNotEmpty addException addMeasurePoint startMeasure stopMeasure debug/info/notice/warning/error/emergency/critical


#### Примеры отправки сообщений в шаблонах Volt

{{ debug(var1, var2) }} {{ info(var1, var2) }} {{ addMessageIfTrue('$var === true', var) }}


### Отладка многомодульных приложений

Мы считаем следующие практики хорошими:

1. Название сервиса кэширования должно содержать слово `cache`.
2. Название сервиса базы данных должно содержать слово `db` — начинаться или заканчиваться этим словом.
3. Для открытия независимого окна отладки модуля можно использовать адрес `/_debugbar/open?m=modulename`.

Отладочная панель может поддерживать многомодульные приложения без каких-либо специальных настроек.

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

// service.php $di->set('my-db-2', function(...) ); $di->set('huan-cun', function(...) ); if ($di->has('debugbar')) { $debugbar = $di['debugbar']; $debugbar->attachDb('my-db-2'); $debugbar->attachCache('huan-cun'); }


### Как действовать при возникновении проблем

1. Последовательно отключайте каждый collector в конфигурационных файлах до тех пор, пока проблема не исчезнет. Это поможет выявить конкретный collector, вызывающий проблему. Затем создайте issue на git@osc с подробным описанием проблемы.
2. Создайте issue на git@osc с описанием проблемы.### Скриншоты

* * *

![Скриншот](http://git.oschina.net/zhuyajie/phalcon-debugbar/raw/master/snapshots/message.png)

* * *

![Скриншот](http://git.oschina.net/zhuyajie/phalcon-debugbar/raw/master/snapshots/timeline.png)

* * *

![Скриншот](http://git.oschina.net/zhuyajie/phalcon-debugbar/raw/master/snapshots/exception.png)

* * *

![Скриншот](http://git.oschina.net/zhuyajie/phalcon-debugbar/raw/master/snapshots/route.png)

* * *

![Скриншот](http://git.oschina.net/zhuyajie/phalcon-debugbar/raw/master/snapshots/database.png)

* * *

![Скриншот](http://git.oschina.net/zhuyajie/phalcon-debugbar/raw/master/snapshots/views.png)

* * *

![Скриншот](http://git.oschina.net/zhuyajie/phalcon-debugbar/raw/master/snapshots/caches.png)

* * *

![Скриншот](http://git.oschina.net/zhuyajie/phalcon-debugbar/raw/master/snapshots/config.png)

* * *

![Скриншот](http://git.oschina.net/zhuyajie/phalcon-debugbar/raw/master/snapshots/session.png)

* * *

![Скриншот](http://git.oschina.net/zhuyajie/phalcon-debugbar/raw/master/snapshots/request.png)

* * *

![Скриншот](http://git.oschina.net/zhuyajie/phalcon-debugbar/raw/master/snapshots/stackdata.png)

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/zhuyajie-phalcon-debugbar.git
git@api.gitlife.ru:oschina-mirror/zhuyajie-phalcon-debugbar.git
oschina-mirror
zhuyajie-phalcon-debugbar
zhuyajie-phalcon-debugbar
master