Страница 1 из 1

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

Добавлено: 21.12.2022, 07:03
korshunov
Понадобилось сделать несложное изменение - в стандартный фид вставлять картинку с водяным знаком вместо обычной. Вроде бы ничего сложного - в соответствующем месте вместо
$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, когда каждый ее вызов делает проверку по списку разрешенных для ресайза размеров - явно нерационально...