Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PHP для продвинутых.docx
Скачиваний:
16
Добавлен:
01.07.2025
Размер:
12.54 Mб
Скачать

31. Отладка

В kohana есть специальный класс Debug со следующими методами:

Debug::dump($arr); - входящий параметр – массив либо объект, который показывает их структуру, работает аналогично стандартному var_dump().

Debug::vars($arr1, $arr2); - метод vars более интересен, т.к. может принимть несколько параметров. Также выводит структуру объектов либо массивов, но по умолчанию, заключает их в тэги <pre></pre>, что делает более читабельным и красивым формат вывода.

Debug::source(__FILE__,__LINE__); - показывает содержимое файла (т.е. php код) с нумерацией для каждой строки. С работой данного метода,вероятно, вы уже познакомились. Например, если попытаться вызвать несуществующую страницу, то на экране появится следующая ошибка, сгенерированная данным методом:

Debug::path(Kohana::find_file(‘classes’, ‘kohana’)) – данный метод предназначен для поиска файлов. Например, в этом примере будет искаться файл kohana.php в папке classes.

Debug::trace(); - возвращает последовательность формирования страницы в виде массива строк (поэтому для просмотра необходимо воспользоваться функцией print_r()). Отображает всю текущую трассировку файла.

32. Профилирование

Инструменты профилирования позволяют выводить время выполения экшнов, запросов и др. php-скриптов.

Обратимся к bootstrap.php и убедимся в том, что методы профайлинга включены.

Включение методов профайлинга. Листинг 32.1

/**

* Initialize Kohana, setting the default options.

*

* The following options are available:

*…

* - boolean errors enable or disable error handlin TRUE

* - boolean profile enable or disable internal profiling TRUE

* - boolean caching enable or disable internal caching FALSE

*/

Kohana::init(array(

'base_url' => '/kohana/',

'index_file' => false,

));

Как видно из подсказки, они включены по умолчанию.

Инструмент профилирования подключается из шаблона.

Включение инструмента профилирования в шаблоне. Листинг 32.2

<div>

<?=View::factory('profiler/stats')?>

</div>

При обновлении страницы шаблона мы увидим общее время выполнения контроллера, минимальное, максимальное, среднее и общее время выполнения каждого запроса:

Кроме этого, если в файле настроек базы данных, у нас будет выставлено значение профайлинга TRUE,

Включение профилирования SQL-запросов. Листинг 32.3

return array

(

'default' => array

(

'type' => 'mysql',

'connection' => array(

'hostname' => 'localhost',

'database' => 'kohana',

'username' => 'root',

'password' => "",

'persistent' => FALSE,

),

'table_prefix' => '',

'charset' => 'utf8',

'caching' => FALSE,

'profiling' => TRUE,

),

);

то мы можем анализировать информацию каждого запроса к базе данных:

И в конце мы увидим общую статистику по времени загрузки данной страницы:

Мы также можем использовать методы профайлинга в контроллерах. Делается это, если нам нужно определить время выполения какого-то участка кода.

Использование профайлинга в контроллере. Листинг 32.4

public function action_index() {

$bench = Profiler::start('Index','Index');

// Получаем данные из модели

$products = Model::factory('text')->all_text();

$content = View::factory('v_center', array(

'products' => $products,

));

$this->template->block_center = array($content);

Profiler::stop($bench);

}

Как видно из листинга, в метод start передается 2 параметра: первый – это имя группы, в котором мы хотим отобразить информацию об этом участке кода, второй – название данного профайлинга.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]