Перейти к содержанию

Лидеры

Популярный контент

Показан контент с высокой репутацией 05/31/26 в Сообщения

  1. Приветствую. Клавдия хочет предложить небольшую оптимизацию хука генерации превью в теме Unitheme2 (app/addons/abt__unitheme2/func.php). Даже прям настаивает. говорит несколько раз перепроверила. Гооврит уууххх как все ускорится, т.к. непрозрачных изображений 99% обычно. Суть Хук fn_abt__unitheme2_generate_thumbnail_post нужен для пересоздания превью прозрачных изображений (чтобы сохранить альфа-канал). Однако сейчас он первой же строкой вызывает fn_get_image_size() (а внутри — finfo_file(), чтение файла оригинала) для каждого изображения, и лишь затем проверяет флаг прозрачности: function fn_abt__unitheme2_generate_thumbnail_post($th_filename,$lazy,$image_path,$width,$height,$image){ list(,,,$tmp_path) = fn_get_image_size(Storage::instance('images')->getAbsolutePath($image_path)); if (!empty($tmp_path) && ( (!empty($image['transparent']) && $image['transparent'] == YesNo::YES) || (!empty($image['icon']['transparent']) && $image['icon']['transparent'] == YesNo::YES) )) { // пересоздание превью — только для прозрачных } } Поскольку признак прозрачности уже доступен в $image['transparent'] (поле transparent в cscart_images), чтение файла для непрозрачных изображений можно не выполнять. Это особенно заметно при включённом lazy_thumbnails: ядро в этом режиме намеренно откладывает работу с файлами, но хук вызывается всегда и читает оригинал на каждое изображение. Предложение — проверять флаг прозрачности до чтения файла: function fn_abt__unitheme2_generate_thumbnail_post($th_filename,$lazy,$image_path,$width,$height,$image){ if ( (empty($image['transparent']) || $image['transparent'] != YesNo::YES) && (empty($image['icon']['transparent']) || $image['icon']['transparent'] != YesNo::YES) ) { return; } list(,,,$tmp_path) = fn_get_image_size(Storage::instance('images')->getAbsolutePath($image_path)); if (!empty($tmp_path)) { // оригинальная логика пересоздания превью для прозрачных } } Логика для прозрачных изображений не меняется, а для остальных пропускается лишнее чтение файла. Просьба рассмотреть возможность включить такую проверку в тему. Спасибо!
    1 балл
  2. Приветствую. Сергей, это не я, это все Клава. Тестирую переход на 8.3. Передайте по инстанциям, пожалуйста. В аддоне ab__category_banners обнаружена проблема совместимости с PHP 8.2+. Файл: app/addons/ab__category_banners/func.php, строки 364 и 414 Ошибка: PHP Deprecated: mb_convert_encoding(): Handling HTML entities via mbstring is deprecated; use htmlspecialchars, htmlentities, or mb_encode_numericentity/mb_decode_numericentity instead Причина: функция mb_convert_encoding() с параметром 'HTML-ENTITIES' объявлена устаревшей в PHP 8.2 и будет удалена в PHP 9.0. Исправление (в обоих местах заменить): // Было: mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8') // Стало: mb_encode_numericentity($html, [0x80, 0x10FFFF, 0, ~0], 'UTF-8') Просьба включить исправление в следующее обновление аддона.
    1 балл
×
×
  • Создать...