Последовательный отчет работы страницы приложения?

Вопросы по работе с Apache, Nginx, PHP, MySQL, Sendmail и т.д.
Аватара пользователя
Redee
Сообщения: 218
Зарегистрирован:
28 июн 2013, 15:43

Последовательный отчет работы страницы приложения?

Redee » 11 окт 2013, 02:49

Как получить отчет(лог) в виде последовательных строк кода скриптов?
Пробовал дебагер и профайлер в phpstorm - не так наглядно

Тобиж чтобы было > начинается >
<?php

// change the following paths if necessary
// $yii=dirname(__FILE__).'/../yii/framework/yii.php';

// Yii, автокомплит для Yii::app
// http://rmcreative.ru/blog/post/yii--avtokomplit-dlja-yiiapp
// После всех манипуляций получим дополнение, например, для Yii::app()->user->

require (dirname(__FILE__).'/../yii/framework/YiiBase.php');

class Yii extends YiiBase
{
    /**
     * @static
     * @return CWebApplication
     */
    public static function app()
    {
        return parent::app();
    }
}

$config=dirname(__FILE__).'/protected/config/main.php';

// remove the following lines when in production mode
defined('YII_DEBUG') or define('YII_DEBUG',true);
// specify how many levels of call stack should be shown in each log message
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);

//require_once($yii);
$app = Yii::createWebApplication($config)->run(); 
> и пошло поехало дальше, и когда заходит в блок выборки отдавало только тот if / elseif / case / ... который сработал

Не могу точнее сформулировать

Дело в том что через профайлер (https://code.google.com/p/webgrind/) и что через точки остановки перехватывая переменные и т.д (в phpstorm-е) не вижу порядка и очередности выполнения
То есть в какую сторону двигаться (есть ли более удобные инструменты) чтобы наглядно, по порядку, со всеми созданными, измененными данными, в строгой последовательности выполнения

Типо отчет задействованных скриптов фреймверка и приложения с ПОДСВЕЧЕННЫМ кодом который ВЫПОЛНИЛСЯ и еще чтобы видеть созданные / присвоенные значения
То есть что прочиталось/выбралось по условиям в файлах и последовательно с обрабатываемыми значениями

з.ы. Многого хочу? Но наверняка уже есть что-то подобное
Последний раз редактировалось Redee 11 окт 2013, 19:05, всего редактировалось 2 раза.
Аватара пользователя
Максим
Сообщения: 5384
Зарегистрирован:
11 дек 2010, 20:29
Контактная информация:

Максим » 11 окт 2013, 03:02

Cмотря чем пользоваться, из того что я знаю:

Eclipse - там F6
phpDisigner8 с XDebug - там ->XDebug->break first line жмешь F7 и двигаешься по одной строчке
NetBeans с XDebug - Когда достигнута строка с точкой останова, исполняйте сценарий по одной строке, нажимая F7 и F8. Отслеживайте состояние приложения в окнах отладчика.

Не знаю, то оно или нет, но попробуйте. Где-то будет точно та "построчность" которая вам требуется :-)
Аватара пользователя
Asmodey
Сообщения: 339
Зарегистрирован:
18 апр 2012, 10:33
Контактная информация:

Asmodey » 11 окт 2013, 11:33

0. Разбираться с тарассировкой. Я так и не научился правильно готовить в нетривиальных случаях.
1. В разные ветки вставляете Yii::trace. Аккуратно выставляете $category. В конфиге разные категории направляете в разные места (тяжело ковырять длинные простыни). Увидите что и как бежало именно в этот запуск.
2. В месте где уж совсем капитулирен, бросаете/возбуждаете исключение.
Трасса покажет что откуда вызывалось. Это не ахти трасса, по всем закоулкам не покажет :)
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
это настраивает глубину раскручивания.
3. Разбираться с файербагом и всякими плюшками к нему.
4. Разбираться с тестированием и грамотной декомпозиции на функции...
Аватара пользователя
Redee
Сообщения: 218
Зарегистрирован:
28 июн 2013, 15:43

Redee » 11 окт 2013, 22:05

Максим писал(а):Cмотря чем пользоваться, из того что я знаю:

Eclipse - там F6
phpDisigner8 с XDebug - там ->XDebug->break first line жмешь F7 и двигаешься по одной строчке
NetBeans с XDebug - Когда достигнута строка с точкой останова, исполняйте сценарий по одной строке, нажимая F7 и F8. Отслеживайте состояние приложения в окнах отладчика.

Не знаю, то оно или нет, но попробуйте. Где-то будет точно та "построчность" которая вам требуется :-)
Максим слишком морочно построчно отслеживать по точкам остановки приложение на yii (делал так на phpstorm - проблематично и долго).
Может так и придется дальше делать, на безрыбье и рак рыба, мда...
Asmodey писал(а):0. Разбираться с тарассировкой. Я так и не научился правильно готовить в нетривиальных случаях.
1. В разные ветки вставляете Yii::trace. Аккуратно выставляете $category. В конфиге разные категории направляете в разные места (тяжело ковырять длинные простыни). Увидите что и как бежало именно в этот запуск.
2. В месте где уж совсем капитулирен, бросаете/возбуждаете исключение.
Трасса покажет что откуда вызывалось. Это не ахти трасса, по всем закоулкам не покажет :)
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
это настраивает глубину раскручивания.
3. Разбираться с файербагом и всякими плюшками к нему.
4. Разбираться с тестированием и грамотной декомпозиции на функции...
Asmodey с трассировкой не в пень колоду, буду гуглить, спасибо за наталкивающую информацию. Хочется без лишних телодвижений все же. А что-то вроде глобального сборщика.

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

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

Есть еще какие мысли по этому поводу ?

Добавлено спустя 3 часа 4 минуты 11 секунд:
'YII_TRACE_LEVEL',3 (если ставлю более 3ех то уровень сбора информации тот же)
Хоть во встроенном логе yii отсортировано по времени, но показывает очень скудно.

в конфиге >
'db'=>array(
			// включаем профайлер
			'enableProfiling'=>true,
			// показываем значения параметров
			'enableParamLogging' => true,
		),
'log'=>array(
			'class'=>'CLogRouter',
			'routes'=>array(
				// направляем результаты профайлинга в ProfileLogRoute
				// (отображается внизу страницы)
				array(
					'class'=>'CProfileLogRoute',
					//'levels'=>'profile',
					//'enabled'=>true,
				),

				// uncomment the following to show log messages on web pages

				array(
					'class'=>'CWebLogRoute',
					// если не определены категории и левелы то берет ВСЁ
					//'categories' => 'application, system.*',
					//'levels'=>'error, warning, trace, profile, info',
				),
Изображение
Аватара пользователя
Asmodey
Сообщения: 339
Зарегистрирован:
18 апр 2012, 10:33
Контактная информация:

Asmodey » 13 окт 2013, 12:40

1. Чем не подходит трассировка.
2. трэйс левел влияет на глубину раскручивания стэка. Я не зря писал про исключения.
3. Профилировщик в yii это связано с производительность. Тем более если БД.
4. Для более подробной информации по прохождению веток предлагалось натыкать содержательных трейс-сообщения. Делали?

Я так и не понял что Вы хотите получить и зачем(вторичный вопрос).
Ответить