Долгожданное обновление класса расширенной отладки и оптимизации для InstantCMS 2.2.1.
Прошу прощения за долгое обновление, был сильно занят и не мог выпустить обновление. Эта версия вышла сейчас только благодаря Loadырю, который взял на себя труд перенести предыдущую версию отладки и оптимизации на текущую версию Инстанта. Спасибо, Loadырь!
Таким образом, в этой версии ничего не добавлено и не изменено. Просто сделана совместимость с текущей Двойкой.
Описание и справку смотрите в предыдущих постах в этом блоге. Например, тут
Класс расширенной отладки для InstantCMS 2.1.0-2.1.1 (v.7) + оптимизация скорости
Скачать класс отладки можно тут
Достаточно просто распаковать содержимое архива с заменой файлов в папку с уже установленной системой. Это версия только для InstantCMS 2.2.1, для более ранних не подходит.
Если вы изменяли файлы оригинальной версии, то проверьте, не пересекаются ли ваши изменения с моими. Список изменённых файлов можно посмотреть тут Класс расширенной отладки для InstantCMS 2.1.2 (v.8) + оптимизация скорости
В конфиге по-умолчанию отладка уже включена (смотрите новый раздел "Отладка" в "Настройках" админки). Если отладочная информация на сайте не показывается, убедитесь, что вы зашли под админом или выключите параметр «Показывать отладочную информацию только администраторам».
Также Loadырь выявил небольшой нюанс, важный для разработчиков. В оригинальной версии движка при создании любой страницы сразу загружаются и компилируются все файлы полей из папки \system\fields вызовом функции getAvailableFormFields() и перебором в ней файлов с расширением *.php, независимо от их использования на странице. То есть, загрузка идёт не по именам классов, а по содержимому папки. Мало того, попытка загрузить все поля может происходить неоднократно для одной и той же страницы. Это всё приводит к необоснованным тормозам. Тем более, когда в систему по мере развития добавляется много сторонних полей. Поэтому в своём патче я исключил подобные вызовы этой функции, а классы полей загружаются по мере их необходимости через автозагрузку классов. Но это значит, что если в оригинальной версии движка файлы с некорректными названиями, содержащими символ подчёркивания '_', без проблем загружались при старте вместе с остальными полями, то для работы в оптимизированной версии файлы полей должны быть без таких символов.
Например, файл \system\fields\list_advanced.php с классом fieldListAdvanced в оригинальной версии загрузится успешно, хотя это и некорректное название файла. А в оптимизированной версии выдаст сообщение о том, что не может найти такой файл. Файл должен называться \system\fields\listadvanced.php
UPD 02.10.2015
Исправление ошибки "Fatal error: Class 'cmsDebug' not found" при запуске задач кроном или при прямом вызове кастомных скриптов с подключением в них bootstrap.php (без использования index.php).
Насколько я понял, есть два способа запроса информации из CMS или выполнения действий в ней. Первый: через index.php — так запрашиваются все страницы сайта. В нём подключается bootstrap.php, в котором загружается ядро системы. Второй: прямой вызов нужного php-скрипта в обход index.php. Тогда в своём скрипте нужно позаботиться о подключении bootstrap.php для загрузки ядра. Пример такого вызова — скрипт cron.php.
Во втором случае не происходила корректная загрузка настроек и класса отладки, поэтому возникали ошибки.
Для исправления достаточно в начало файла bootstrap.php прописать отключение отладки — при кастомных вызовах она, по сути, не нужна:
Файл архива "Отладки и оптимизации" перезалил. По ссылке выше в этом посте уже новый архив debug_v8.1.1.zip с добавленным bootstrap.php. Для обновления уже установленной версии 8.1 достаточно обновить в системе файл bootstrap.php, заменив файлом из этого архива.
Прошу прощения за долгое обновление, был сильно занят и не мог выпустить обновление. Эта версия вышла сейчас только благодаря Loadырю, который взял на себя труд перенести предыдущую версию отладки и оптимизации на текущую версию Инстанта. Спасибо, Loadырь!
Таким образом, в этой версии ничего не добавлено и не изменено. Просто сделана совместимость с текущей Двойкой.
Описание и справку смотрите в предыдущих постах в этом блоге. Например, тут
Класс расширенной отладки для InstantCMS 2.1.0-2.1.1 (v.7) + оптимизация скорости
Скачать класс отладки можно тут
Достаточно просто распаковать содержимое архива с заменой файлов в папку с уже установленной системой. Это версия только для InstantCMS 2.2.1, для более ранних не подходит.
Если вы изменяли файлы оригинальной версии, то проверьте, не пересекаются ли ваши изменения с моими. Список изменённых файлов можно посмотреть тут Класс расширенной отладки для InstantCMS 2.1.2 (v.8) + оптимизация скорости
В конфиге по-умолчанию отладка уже включена (смотрите новый раздел "Отладка" в "Настройках" админки). Если отладочная информация на сайте не показывается, убедитесь, что вы зашли под админом или выключите параметр «Показывать отладочную информацию только администраторам».
Также Loadырь выявил небольшой нюанс, важный для разработчиков. В оригинальной версии движка при создании любой страницы сразу загружаются и компилируются все файлы полей из папки \system\fields вызовом функции getAvailableFormFields() и перебором в ней файлов с расширением *.php, независимо от их использования на странице. То есть, загрузка идёт не по именам классов, а по содержимому папки. Мало того, попытка загрузить все поля может происходить неоднократно для одной и той же страницы. Это всё приводит к необоснованным тормозам. Тем более, когда в систему по мере развития добавляется много сторонних полей. Поэтому в своём патче я исключил подобные вызовы этой функции, а классы полей загружаются по мере их необходимости через автозагрузку классов. Но это значит, что если в оригинальной версии движка файлы с некорректными названиями, содержащими символ подчёркивания '_', без проблем загружались при старте вместе с остальными полями, то для работы в оптимизированной версии файлы полей должны быть без таких символов.
Например, файл \system\fields\list_advanced.php с классом fieldListAdvanced в оригинальной версии загрузится успешно, хотя это и некорректное название файла. А в оптимизированной версии выдаст сообщение о том, что не может найти такой файл. Файл должен называться \system\fields\listadvanced.php
UPD 02.10.2015
Исправление ошибки "Fatal error: Class 'cmsDebug' not found" при запуске задач кроном или при прямом вызове кастомных скриптов с подключением в них bootstrap.php (без использования index.php).
Насколько я понял, есть два способа запроса информации из CMS или выполнения действий в ней. Первый: через index.php — так запрашиваются все страницы сайта. В нём подключается bootstrap.php, в котором загружается ядро системы. Второй: прямой вызов нужного php-скрипта в обход index.php. Тогда в своём скрипте нужно позаботиться о подключении bootstrap.php для загрузки ядра. Пример такого вызова — скрипт cron.php.
Во втором случае не происходила корректная загрузка настроек и класса отладки, поэтому возникали ошибки.
Для исправления достаточно в начало файла bootstrap.php прописать отключение отладки — при кастомных вызовах она, по сути, не нужна:
Файл архива "Отладки и оптимизации" перезалил. По ссылке выше в этом посте уже новый архив debug_v8.1.1.zip с добавленным bootstrap.php. Для обновления уже установленной версии 8.1 достаточно обновить в системе файл bootstrap.php, заменив файлом из этого архива.
Реклама #
Val 9 лет назад #
Loadырь спасибо! Будем тестировать)))) +100500!
Алексей Т 9 лет назад #
Def 9 лет назад #
WebMan 9 лет назад #
WebMan 9 лет назад #
qwest 9 лет назад #
qwest 9 лет назад #
ivanish 9 лет назад #
E_NOTICE: Undefined index: og_type /system/controllers/opengraph/hooks/content_before_item.php (47)
/system/controllers/opengraph/hooks/content_before_item.php (47) onOpengraphContentBeforeItem->run
/system/core/controller.php (346) onOpengraphContentBeforeItem->call_user_func_array
/system/core/controller.php (308) cmsController->runExternalHook
И второй момент - крон выдает такое Fatal error: Class 'cmsDebug' not found in /www/domen.ru/system/config/autoload.php on line 11
WebMan 9 лет назад #
По второму. Пытался воспроизвести ошибку на чистой системе с отладкой и оптимизацией. Запускал все стандартные задачи из управления планировщиком в админке - ничего подобного не обнаружил. Поэтому уточните, ошибка появляется для всех задач или только для одной/нескольких? Ошибку вызывают и стандартные задачи тоже или только добавленные Вами? При вызове какого контроллера и хука происходит ошибка? При каком способе запуска появляется такая ошибка - при запуске из админки или по времени планировщиком?
Lancelot 9 лет назад #
То мне достаточно переименовать файл без пробела и проблема решена?
Loadырь 9 лет назад #
Loadырь 9 лет назад #
Lancelot 9 лет назад #
Antuanett 9 лет назад #
WebMan 9 лет назад #
Antuanett 9 лет назад #
WebMan 9 лет назад #
Antuanett 9 лет назад #
Loadырь 9 лет назад #
Antuanett 9 лет назад #
WebMan 9 лет назад #
Есть два варианта:
Первый, простой - отключить отладку для планировщика. Достаточно добавить в начало файла cron.php строку
WebMan 9 лет назад #
Birles 8 лет назад #
WebMan 8 лет назад #
Birles 8 лет назад #