Отладка с помощью TotalTime, QueryTime, Queries на Fenom. Как?

Вопрос пожалуй глупый, и всё-же хотелось бы вывести эти данные (TotalTime, QueryTime, Queries, которые в футере на этом сайте) средствами Феном. Возможно ли? И как это сделать?
Павел Гвоздь
14 августа 2015, 17:04
modx.pro
2
1 365
0
Поблагодарить автора Отправить деньги

Комментарии: 14

Василий Наумкин
14 августа 2015, 21:01
+1
Пока никак, добавлю в новой версии скоро.
    Василий Наумкин
    14 августа 2015, 22:11
    +1
    Попробовал добавить, и выходит, что нет особого смысла.

    1. Fenom выполняется раньше (вот здесь), чем выставляются оригинальные плейсхолдеры MODX, поэтому время выполнения выходит чуть меньше, чем на самом деле.

    2. Оригинальные плейсхолдеры работают в любом случае, с любым парсером, потому что MODX просто меняет их через str_replace при выдаче страницы юзеру.

    То есть, добавить это я могу, но только ради эстетического удовольствия, без особой пользы. Причем, использовать нужно будет вот так:
    {set $info = $_modx->getInfo()}
    <pre>
    	{$info.totalTime}
    	{$info.queryTime}
    	{$info.phpTime}
    	{$info.queries}
    </pre>
    
    Как считаешь, нужно оно тебе в таком виде?
      Павел Гвоздь
      16 августа 2015, 02:06
      +1
      Я думаю, было бы здорово, если б и это было в возможностях Феном, пусть даже чуть неточно. К тому-же если полностью отказаться от modx тегов в шаблонах и вообще везде, то наверное разница во времени будет практически неразличимой?

      В любом случае решать тебе. Как бы то ни было — то, что ты сделал для нас — заслуживает уважения (не только Феном, хотя он поставил большой восклицательный знак)!

      Начал интенсивно использовать при разработке include и extends. Шаблоны стали более гибче. Всё легко меняется в одном месте. Без кучи чанков. В общем я до сих пор под впечатлениями от того, как это просто внедрить, буквально несколькими кликами.
        Василий Наумкин
        16 августа 2015, 08:33
        +3
        Эти теги [^t^], [^q^] и остальные — они и не теги MODX. Они не разбираются парсером и не преобразовываются в объекты.

        MODX просто заменяет их на значения при выводе документа, и делает это всегда, независимо ни от чего.
        Значения в этих «тегах» более точны и быстрее работают, чем если получать эти данные через Fenom.

        В общем, со всех сторон подумав, я считаю, что нужно продолжать использовать эти спецсимволы, а в {$_modx} добавить эту функцию getInfo() для проверки времени и запросов в текущий момент в любом месте кода — то есть, для проверки времени выполнения каких-то отдельных шаблонов и чанков.

        А [^t^], [^q^], [^qt^] как обычно будут показывать итоговые цифры для всей страницы.
      Василий Наумкин
      21 августа 2015, 09:34
      +1
      Можно обновляться до версии 2.1.4-pl и читать документацию по новому методу.
        Павел Гвоздь
        21 августа 2015, 10:45
        0
        Спасибо большое, Василий. Я вот иногда замечаю такое, что если на странице или в шаблоне прописано только {include 'test'} или {extends 'test'}, то он не парсит его, а выводит прям как есть текстом. Это глюк или я что-то не пойму?

        Обновлено: А вот если ниже дописать {block 'test'} {/block}, то всё приходит в норму и Феном включается.
        Павел Гвоздь
        21 августа 2015, 10:50
        0
        Ещё, если в настройках указано «cache_resource=1» (по сути, по-умолчанию), то при кешированном вызове сниппета через $_modx->runSnippet при первой загрузке после обновлённого кеша сниппет отрабатывает, а при последующих он как-будто вообще не выполняется. Даже из кеша. Это, я так понимаю, точно баг?
          Василий Наумкин
          21 августа 2015, 11:01
          +1
          {$_modx->runSnippet('pdoMenu', ['parents' => 0, 'showLog' => 1])}
          Нет проблем. Работает и результат сохраняется в файле кэша ресурса.

          Создай тестовый сайт и продемонстрируй там, что именно не работает.
            Павел Гвоздь
            21 августа 2015, 13:39
            1
            0
            Вот так если Minifyx вызвать в чанке Theme.BootstrapHead, то воспроизводится:

            {$_modx->runSnippet('MinifyX', [
            	'minifyCss'			=> 1,
            	'cssPlaceholder'	=> 'minifyxCss',
            	'registerCss'		=> 'placeholder',
            	'cssSources'		=> '
            		' ~ $_modx->config.assets_url ~ 'components/themebootstrap/css/bootstrap.min.css,
            		' ~ $_modx->config.assets_url ~ 'components/themebootstrap/css/add.css
            	',
            	'minifyJs'			=> 1,
            	'jsPlaceholder'		=> 'minifyxJs',
            	'registerJs'		=> 'placeholder',
            	'jsSources'			=> '
            		' ~ $_modx->config.assets_url ~ 'components/themebootstrap/js/bootstrap.min.js
            	'
            ])}
            
            {$_modx->getPlaceholder('minifyxCss')}
            {$_modx->getPlaceholder('minifyxJs')}

            Обновлено: Но дело не в cssPlaceholder/jsPlaceholder, и без них тоже самое происходит.
              Василий Наумкин
              21 августа 2015, 13:48
              0
              Ты просто не задумываешься о том, что и как работает. Если кэшированный сниппет не вызывается, откуда возьмутся его плейсхолдеры в системе?

              Используй
              'registerJs' => 'default',
              'registerCss' => 'default',
              Это пропишет готовые HTML теги в тело страницы и они будут в кэше.
                Павел Гвоздь
                21 августа 2015, 13:49
                0
                Можешь не верить, но я задумываюсь. По крайней мере стараюсь.

                Перед тем, как ты ответил, я обновил предыдущий пост и написал, как раз о том, о чём написал ты. Дело не в этом, Василий, я это прежде всего проверил.

                Вот так тоже самое:
                {$_modx->runSnippet('MinifyX', [
                	'minifyCss'			=> 1,
                	'registerCss'		=> '1',
                	'cssSources'		=> '
                		' ~ $_modx->config.assets_url ~ 'components/themebootstrap/css/bootstrap.min.css,
                		' ~ $_modx->config.assets_url ~ 'components/themebootstrap/css/add.css
                	',
                	'minifyJs'			=> 1,
                	'registerJs'		=> '1',
                	'jsSources'			=> '
                		' ~ $_modx->config.assets_url ~ 'components/themebootstrap/js/bootstrap.min.js
                	'
                ])}
                  Василий Наумкин
                  21 августа 2015, 14:09
                  +1
                  Да, ты прав.

                  Фокус в том, что обработка тегов Fenom на странице происходит после того, как MODX копирует все зарегистрированные стили и скрипты в кэш ресурса.

                  Так что добавил дополнительную обработку можно обновляться.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      14