Логотип   Простое и понятное управление
  Уникальные возможности по настройке
  Open Server скачали уже 1 022 774 раза!

Форум

Добро пожаловать, Гость!

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

Вопросы по работе с Apache, Nginx, PHP, MySQL, Sendmail и т.д.
Аватара пользователя
Redee
Сообщения: 218
C нами: 3 года 5 мес

Непрочитанное сообщение 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 раза.

Аватара пользователя
Максим
Cейчас: в сети
Сообщения: 4878
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 11 окт 2013, 03:02

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

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

Не знаю, то оно или нет, но попробуйте. Где-то будет точно та "построчность" которая вам требуется :-)

Аватара пользователя
Asmodey
Сообщения: 299
C нами: 4 года 7 мес

Непрочитанное сообщение 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
C нами: 3 года 5 мес

Непрочитанное сообщение 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
Сообщения: 299
C нами: 4 года 7 мес

Непрочитанное сообщение Asmodey » 13 окт 2013, 12:40

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

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


Вернуться в «Модули и инструменты»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость