Не всегда создаются кэшированные изображения

Главные вкладки

Аватар пользователя sadad sadad 23 декабря 2019 в 17:45

Здравствуйте!

Может кто сталкивался с подобным? Друпал 7.69, PHP7.3, MariaDB 5.6

При создании материала не всегда создаются кэшированные изображения (image styles). Помогает сброс всего кэша.

Проблема возникает периодически (не каждый раз). Ошибок в логе не наблюдаю.

Если кто подскажет решение, или способ куда искать - буду очень признателен.

UPD На сервере крутится несколько сайтов. Проблема только с одним.

Лучший ответ

Аватар пользователя ivnish ivnish 26 декабря 2019 в 14:48
2

Лучше не от текущей даты формировать путь для изображений, а от даты создания ноды.

Текущая дата меняется каждый день Smile

Комментарии

Аватар пользователя sadad sadad 24 декабря 2019 в 14:39

Воспроизвести не могу. Появляется не очень часто. Может быть 2-3 раза в день.

Смотрел во всех логах - апач, мускл, сислог... Ничего криминального не нахожу.

Аватар пользователя sadad sadad 24 декабря 2019 в 17:14

Постоянного мониторинга нет. Но в режиме реального времени если наблюдать, то с большим запасом железо.
8 ядерный проц. В среднем показывает load average: 1.35, 1.15, 1.16
Файл подкачки пустой. Памяти с избытком. С дисками всё в порядке. Под базу SSD используются.

Самое неприятное - логи пустые (криминала в них нет). Друпал чистый без вмешательств и патчей.

Аватар пользователя sadad sadad 24 декабря 2019 в 22:20

В общем плюнул на это дело. Написал модуль, который перед выводом ноды проверяем на битые ссылки и если что - кэш сбрасывает. После НГ займусь плотно, если само не рассосется )

Аватар пользователя sadad sadad 25 декабря 2019 в 12:23

И всё же решение нашлось. Поставил imagemagick вместо GD. Обидно только - причину не определил. Но пока уже сутки все нормально.

Аватар пользователя marassa marassa 26 декабря 2019 в 10:41

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

Аватар пользователя marassa marassa 26 декабря 2019 в 11:03

Смотря какой материал. Если это статья с картинками, то конечно они покажутся при первом просмотре после создания. А у меня например картинка - это отдельный тип материала, и есть несколько разных стилей, использующихся в разных вьюхах. При создании новой картинки никакие стили автоматически не показываются и не создаются, а создаются при последующем просмотре разных вьюх, в которые эта картинка входит. Некоторые стили для некоторых картинок не создаются никогда, потому что не востребованы.

Аватар пользователя sas@drupal.org sas@drupal.org 26 декабря 2019 в 11:29

Подозреваю, что материал создавал человек одного типа с однотипным поведением по кешу, поэтому и вопрос у него возник.

Аватар пользователя sadad sadad 26 декабря 2019 в 14:36

Спасибо всем за участие в теме!!!

Все верное здесь написано. Только у меня вообще ерунда какая-то. Вернул все обратно (дурная голова рукам покоя не дает) и сумел найти момент ошибки. При создании материала деривативы создаются. Однако в какой-то момент пропадают.

На сайте установлена запись файлов в каталоги вида [current-year]/[cuurent-month]/[current-day].

Так вот. При создании материала, к примеру, дериватив создается в каталоге 2019/12/23/img.jpg

А по прошествии какого-то времени Друпал начинает искать его в каталоге 2019/12/24/img.jpg

И самое главное - ошибка не всегда появляется. Так... Изредка.

И при чем здесь imagemagic? Однако же помогло )

Возможно, где-то неверно отражается результат операции по созданию изображения, а вот имагик все верно отдает?

Аватар пользователя ivnish ivnish 26 декабря 2019 в 14:48
2

Лучше не от текущей даты формировать путь для изображений, а от даты создания ноды.

Текущая дата меняется каждый день Smile

Аватар пользователя sadad sadad 26 декабря 2019 в 16:40

О! Точно!

Подождите, но в момент формирования и загрузки файла - дата создания ноды ведь еще неизвестна? А пути деривативов формируются уже потом из пути загрузки файла.
----------------------------
Ага! Разобрался. В момент загрузки файта он еще в tmp находится, а переносится в рабочий каталог уже при сохранении, так что работает img/[node:created:custom:Y]/[node:created:custom:m]

Аватар пользователя sadad sadad 26 декабря 2019 в 17:51

И в общем да. Наверное вся собака порылась, что я неверно токены в пути файла указал - привязался к текущей дате. Бывает (

Спасибо за подсказку! С наступающим НГ!