Как получить список всех потерянных изображений?

8

Я хотел бы создать список изображений, которые больше не используются ни в одном элементе контента, чтобы их можно было удалить с диска. Каков наилучший метод для создания такого списка?

miroxlav
источник

Ответы:

5

Я не уверен, что есть лучший метод, как это сделать. Единственный способ, которым я могу придумать, требует немного усилий. То есть, генерируя список всех изображений в таблице содержимого в базе данных (и, возможно, в модулях, меню, баннерах и т. Д. В любом месте, где есть ссылки на изображения, что очень много), сравните этот список со всеми изображениями. в файловой системе, а затем сравнить между каждым списком и удалить изображения, которые не используются.

Так это будет выглядеть так:

1) Получить список всех изображений в таблице базы данных com_content. Дамп всех строк, регулярное выражение для <img src="images/stories/an-image.jpg" />. Другой способ - использовать метод strip_tags () в php и разрешить только тег. Я считаю это проще, чем писать регулярные выражения в целом. По сути, запустите скрипт php, чтобы создать этот список для вас как текстовый документ или csv.

2) Получить список всех изображений на сайте. Я мог бы использовать grep из командной строки, чтобы сделать это. Возможно, вы могли бы сделать это с помощью некоторого рекурсивного метода файловой системы php.

3) получить оба в электронную таблицу и провести какое-то сравнение с каждым столбцом, чтобы увидеть, используется ли изображение, составив список неиспользуемых изображений в третьем столбце.

-

Лично, если у вас нет дерьма тонны изображений, я не уверен, что это стоит усилий. Но вам придется определить это в ожидании вашего варианта использования. Также может быть гораздо более простое решение, которое кто-то должен будет предложить!

Чед Винднагл
источник
3

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

Майкл
источник
3

Если у вас есть журналы доступа, возможно, вы сможете извлечь все запрошенные файлы изображений за последние X месяцев (вам нужно будет поиграть со всеми этими данными). Так что они очень вероятно используются на вашем реальном сайте (но не на 100%). В зависимости от вашего контента и структуры сайта, и если ваш сайт не очень большой (то есть 1 миллион статей), вполне вероятно, что остальные, вероятно, не используются (опять же, не 100%).

Я считаю это решение простым. Сделайте резервную копию изображений до удаления. Позже вы можете отслеживать ошибки 404, пытаясь открыть определенные файлы, и вы можете решить восстановить их.

Это грязное решение, но в действительности нет простого пути. Лучшим вариантом будет последовать совету Чада и написать свой собственный парсер.

Иво
источник
Хорошая идея, спасибо. У моего провайдера веб-хостинга журналы доступа недоступны для нас, клиентов, но этот ответ может быть полезен для других читателей.
Miroxlav
0

Несмотря на то, что на момент постановки вопроса не было никаких расширений, по состоянию на август 2018 года существует, по крайней мере, несколько расширений, которые, по-видимому, могут находить и удалять потерянные изображения:

VX orphanImages (платное продление)

«Плагин VX orphanImages сканирует вашу папку изображений Joomla! Для поиска элементов, которые не используются ни в одном контенте на сайте. Он использует основной компонент Media для маркировки потерянных изображений в списке, чтобы вы могли решить, сохранять их или удалять. "

ImageManager (бесплатные / платные версии)

«ImageManager for Joomla! Позволяет перемещать и переименовывать изображения, не теряя ссылки на изображения в статьях и пользовательских модулях HTML. Просто перетащите изображения, чтобы реструктурировать и очистить веб-сайт. Он также может перечислять все неиспользуемые изображения и удалять их. «.

Нил Робертсон
источник