Отладка с помощью TotalTime, QueryTime, Queries на Fenom. Как?
Вопрос пожалуй глупый, и всё-же хотелось бы вывести эти данные (TotalTime, QueryTime, Queries, которые в футере на этом сайте) средствами Феном. Возможно ли? И как это сделать?
Поблагодарить автора
Отправить деньги
Комментарии: 14
Пока никак, добавлю в новой версии скоро.
Попробовал добавить, и выходит, что нет особого смысла.
1. Fenom выполняется раньше (вот здесь), чем выставляются оригинальные плейсхолдеры MODX, поэтому время выполнения выходит чуть меньше, чем на самом деле.
2. Оригинальные плейсхолдеры работают в любом случае, с любым парсером, потому что MODX просто меняет их через str_replace при выдаче страницы юзеру.
То есть, добавить это я могу, но только ради эстетического удовольствия, без особой пользы. Причем, использовать нужно будет вот так:
1. Fenom выполняется раньше (вот здесь), чем выставляются оригинальные плейсхолдеры MODX, поэтому время выполнения выходит чуть меньше, чем на самом деле.
2. Оригинальные плейсхолдеры работают в любом случае, с любым парсером, потому что MODX просто меняет их через str_replace при выдаче страницы юзеру.
То есть, добавить это я могу, но только ради эстетического удовольствия, без особой пользы. Причем, использовать нужно будет вот так:
{set $info = $_modx->getInfo()} <pre> {$info.totalTime} {$info.queryTime} {$info.phpTime} {$info.queries} </pre>Как считаешь, нужно оно тебе в таком виде?
Я думаю, было бы здорово, если б и это было в возможностях Феном, пусть даже чуть неточно. К тому-же если полностью отказаться от modx тегов в шаблонах и вообще везде, то наверное разница во времени будет практически неразличимой?
В любом случае решать тебе. Как бы то ни было — то, что ты сделал для нас — заслуживает уважения (не только Феном, хотя он поставил большой восклицательный знак)!
Начал интенсивно использовать при разработке include и extends. Шаблоны стали более гибче. Всё легко меняется в одном месте. Без кучи чанков. В общем я до сих пор под впечатлениями от того, как это просто внедрить, буквально несколькими кликами.
В любом случае решать тебе. Как бы то ни было — то, что ты сделал для нас — заслуживает уважения (не только Феном, хотя он поставил большой восклицательный знак)!
Начал интенсивно использовать при разработке include и extends. Шаблоны стали более гибче. Всё легко меняется в одном месте. Без кучи чанков. В общем я до сих пор под впечатлениями от того, как это просто внедрить, буквально несколькими кликами.
Эти теги [^t^], [^q^] и остальные — они и не теги MODX. Они не разбираются парсером и не преобразовываются в объекты.
MODX просто заменяет их на значения при выводе документа, и делает это всегда, независимо ни от чего.
Значения в этих «тегах» более точны и быстрее работают, чем если получать эти данные через Fenom.
В общем, со всех сторон подумав, я считаю, что нужно продолжать использовать эти спецсимволы, а в {$_modx} добавить эту функцию getInfo() для проверки времени и запросов в текущий момент в любом месте кода — то есть, для проверки времени выполнения каких-то отдельных шаблонов и чанков.
А [^t^], [^q^], [^qt^] как обычно будут показывать итоговые цифры для всей страницы.
MODX просто заменяет их на значения при выводе документа, и делает это всегда, независимо ни от чего.
Значения в этих «тегах» более точны и быстрее работают, чем если получать эти данные через Fenom.
В общем, со всех сторон подумав, я считаю, что нужно продолжать использовать эти спецсимволы, а в {$_modx} добавить эту функцию getInfo() для проверки времени и запросов в текущий момент в любом месте кода — то есть, для проверки времени выполнения каких-то отдельных шаблонов и чанков.
А [^t^], [^q^], [^qt^] как обычно будут показывать итоговые цифры для всей страницы.
Можно обновляться до версии 2.1.4-pl и читать документацию по новому методу.
Спасибо большое, Василий. Я вот иногда замечаю такое, что если на странице или в шаблоне прописано только {include 'test'} или {extends 'test'}, то он не парсит его, а выводит прям как есть текстом. Это глюк или я что-то не пойму?
Обновлено: А вот если ниже дописать {block 'test'} {/block}, то всё приходит в норму и Феном включается.
Обновлено: А вот если ниже дописать {block 'test'} {/block}, то всё приходит в норму и Феном включается.
Да, там проверка на синтаксис тегов Fenom, чтобы не гонять через него все чанки подряд.
Видимо, её нужно улучшить.
Видимо, её нужно улучшить.
Ещё, если в настройках указано «cache_resource=1» (по сути, по-умолчанию), то при кешированном вызове сниппета через $_modx->runSnippet при первой загрузке после обновлённого кеша сниппет отрабатывает, а при последующих он как-будто вообще не выполняется. Даже из кеша. Это, я так понимаю, точно баг?
{$_modx->runSnippet('pdoMenu', ['parents' => 0, 'showLog' => 1])}
Нет проблем. Работает и результат сохраняется в файле кэша ресурса.Создай тестовый сайт и продемонстрируй там, что именно не работает.
Вот так если Minifyx вызвать в чанке Theme.Bootstrap — Head, то воспроизводится:
Обновлено: Но дело не в cssPlaceholder/jsPlaceholder, и без них тоже самое происходит.
{$_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, и без них тоже самое происходит.
Ты просто не задумываешься о том, что и как работает. Если кэшированный сниппет не вызывается, откуда возьмутся его плейсхолдеры в системе?
Используй
Используй
'registerJs' => 'default',
'registerCss' => 'default',
Это пропишет готовые HTML теги в тело страницы и они будут в кэше.
Можешь не верить, но я задумываюсь. По крайней мере стараюсь.
Перед тем, как ты ответил, я обновил предыдущий пост и написал, как раз о том, о чём написал ты. Дело не в этом, Василий, я это прежде всего проверил.
Вот так тоже самое:
Перед тем, как ты ответил, я обновил предыдущий пост и написал, как раз о том, о чём написал ты. Дело не в этом, Василий, я это прежде всего проверил.
Вот так тоже самое:
{$_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
'
])}
Да, ты прав.
Фокус в том, что обработка тегов Fenom на странице происходит после того, как MODX копирует все зарегистрированные стили и скрипты в кэш ресурса.
Так что добавил дополнительную обработку можно обновляться.
Фокус в том, что обработка тегов Fenom на странице происходит после того, как MODX копирует все зарегистрированные стили и скрипты в кэш ресурса.
Так что добавил дополнительную обработку можно обновляться.
Супер! Спасибо, Василий!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.