Изображения для фида

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #1 korshunov » 21.12.2022, 07:03

Понадобилось сделать несложное изменение - в стандартный фид вставлять картинку с водяным знаком вместо обычной. Вроде бы ничего сложного - в соответствующем месте вместо
$this->image->getResizeModifier($imageFilename, 1200, 1200)
вставить
$this->image->getResizeModifier($imageFilename, 1200, 1200, true)

Однако имеем большой сюрприз - фид работать перестает полностью.
Оказывается, что во время формирования фида при создании URL картинки требуется обновить список размеров для разрешенных резайзов. Для этого требуется провести простенький SQL-запрос, что при формировании фида никак не разрешается, выдает ошибку

channel-name.CRITICAL: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. #0

То есть налицо недостаток формирования фида. Блокировка SQL-запросов совсем ни к чему в такой ситуации. Полагаю, это наследие Simpla, когда в фиде это делалось для экономии памяти.
Заодно имеем недостаток getResizeModifier, когда каждый ее вызов делает проверку по списку разрешенных для ресайза размеров - явно нерационально...

Название раздела: Баг-репорт OkayCMS (Сообщения об ошибках)
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Баг-репорт OkayCMS (Сообщения об ошибках)»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 24 гостя