Статьи  : 

Профайлер для отладки OpenCart 1.5

1 декабря 2016, 17:00

В связи с регулярно возникающими вопроса по поводу отладки опенкарта, мы решили опубликовать инструкцию, как можно самостоятельно установить профайлер в opencart 1.5.

Для начала нужно скачать архив с измененными файлами (Внимание! Не копируйте файлы из архива поверх имеющихся! Внимательно читайте, что нужно сделать с каждым файлом!). Структура архива соответствует структуре опенкарта. В архиве находятся четыре файла:

1. profiler.php переносится в корень проекта как есть, без всяких изменений.

2. из index.php копируется блок в самом низу, где стоит $_COOKIE['secret_profiler']:

if (isset($_COOKIE['secret_profiler']) && 'secret_value' == $_COOKIE['secret_profiler']) {
	//include 'profiler.php';
}


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

Вместо secret_value необходимо указать свое секретное значение (по которому будет отображаться блок отладки).

3. из startup.php добавляется блок с $starttime (в самом верху):

// get time begin load
$starttime = microtime();
$starttime = explode(' ', $starttime);
$starttime = $starttime['1'] + $starttime['0'];


4. из db.php добавляется $query_data и заменяется метод query:

public $query_data = array();
public function query($sql) {
	$starttime = microtime();
	$starttime = explode(' ', $starttime);
	$starttime = $starttime['1'] + $starttime['0'];

	$result = $this->driver->query($sql);
	$endtime = microtime();
	$endtime = explode(' ', $endtime);
	$endtime = $endtime['1'] + $endtime['0'];
	$this->query_data[] = array(
				'query'		=>	$sql,
				'time'		=>	number_format($endtime - $starttime, 5)
			);
	unset($starttime);
	unset($endtime);

	return $result;
}


Как видно, поступающие запросы сохраняются в промежуточный массив, который потом и выводится на экран через profiler.php.

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


Читайте также:
Оптимизация opencart 1.5
Производительность кеша в Opencart 1.5