Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Как найти и удалить фото, которые не используются?


 Share

Recommended Posts

Есть много фото в базе в разных папках, которые не используются. Есть ли модуль или способ полегче, чтобы почистить базу ? Спасибо!

Link to comment
Share on other sites


Вообще, универсального способа очистки не существует.

Модули, которые выводят изображения, могут очень хитро хранить информацию о выводимых файлах.

 

1)  Можно, например, просканировать БД и вытащить из нее все названия изображений.

Но придется сканировать настройки модулей в том числе.

При сканировании создать отдельную таблицу со списком всех изображения.

И далее если изображения нет в списке, то оно удаляется из исходников и кеша.

 

Но такой способ на 100% не гарантирует, что не будут удалены полезные изображения тоже. Но процентов на 90...99% можно доверять этому методу.

 

2) По идее, нужно сканировать всю БД по шаблону типа ".jpeg" (регулярное выражение должно быть тут) и складывать результат в отдельную таблицу.

  • +1 1
Link to comment
Share on other sites

16 минут назад, Ggtore сказал:

Есть модуль:

 

беда этого модуля в том, что он не учитывает многие изображения и удалит просто-напросто полезные в том числе.

он работает приблизительно по описанному мною выше алгоритму в вар. 1.

 

 

из описания:

Цитата

Если ссылка на изображение была добавлена вручную, например в html описание товара, то такие изображения не учитываются.

 

 

Т. е. он построен по неправильному алгоритму, о чем я писал выше.

 

Напишу ка я свое решение под это дело.  Бескомпромиссное и правильное.

Правильный алгоритм я описал выше как второй вариант.

Link to comment
Share on other sites

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

Что бы модуль все изображения в эту папку разложил по под-папкам с названиями категорий.

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

Ну а потом просто убить все остальные папки..

Как то так видимо.

Link to comment
Share on other sites

Вспомнил еще давно набросал такой скриптик:

https://for-opencart.com/must-be/delete-old-images

там просто прописываете папку которую сканить.

Конечно, сделайте бекап папки с фото перед чисткой и запускайте.

Link to comment
Share on other sites

1 час назад, sitecreator сказал:

 

беда этого модуля в том, что он не учитывает многие изображения и удалит просто-напросто полезные в том числе.

он работает приблизительно по описанному мною выше алгоритму в вар. 1.

 

Читал тему поддержки. Слишком дорого у них переписать под нужды, если не попрет. И жалобы есть.

 

а если спарсить сайт и закачать обратно? Есть такой способ? 

 

13 минут назад, Exploits сказал:

Вспомнил еще давно набросал такой скриптик:

https://for-opencart.com/must-be/delete-old-images

там просто прописываете папку которую сканить.

Конечно, сделайте бекап папки с фото перед чисткой и запускайте.

Это я читал как раз)) Не повиснет, если там пару тысяч в папке фото? 

Link to comment
Share on other sites


6 минут назад, Vorodisa сказал:

Читал тему поддержки. Слишком дорого у них переписать под нужды, если не попрет. И жалобы есть.

 

а если спарсить сайт и закачать обратно? Есть такой способ? 

 

Это я читал как раз)) Не повиснет, если там пару тысяч в папке фото? 

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

Link to comment
Share on other sites

5 минут назад, Exploits сказал:

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

echo "<pre>";
		$net = 0;
		$find_files = $this->scan_Dir(DIR_IMAGE . "data"); // здесь указываем директория где есть только фото товаров
		if($find_files){		
			foreach($find_files as $file){
				$image = explode("www/image/", $file); - ТУТ АДРЕС СКАНИРУЕМОЙ ПАПКИ УКАЗЫВАЕМ?
				
				$query = $this->db->query("SELECT product_id FROM oc_product WHERE image = '".$image[1]."'"); //главное фото
				if(!$query->rows){
				

Я прост далекий немного от этого))))

Edited by Vorodisa
Link to comment
Share on other sites


1 минуту назад, Vorodisa сказал:

echo "<pre>";
		$net = 0;
		$find_files = $this->scan_Dir(DIR_IMAGE . "data"); // здесь указываем директория где есть только фото товаров
		if($find_files){		
			foreach($find_files as $file){
				$image = explode("www/image/", $file); - ТУТ АДРЕС СКАНИРУЕМОЙ ПАПКИ УКАЗЫВАЕМ?
				
				$query = $this->db->query("SELECT product_id FROM oc_product WHERE image = '".$image[1]."'"); //главное фото
				if(!$query->rows){
				

Я прост далекий немного от этого))))

там где:

$image = explode("www/image/", $file);

Посмотрите в config.php DIR_IMAGE и если там перед /image/ другое что-то - то и ставьте в скрипт, может быть так:

$image = explode("public_html/image", $file); если в конфиге не www а public_html.

Папку вот сюда $find_files = $this->scan_Dir(DIR_IMAGE . "data"); // здесь указываем директория где есть только фото товаров

 

папка data - стандартная папка для 1.5 версии, с 2.х уже папка catalog

Но! Лучше указывать ту папку в которой фото только товаров, например: 

$find_files = $this->scan_Dir(DIR_IMAGE . "data/product_photo"); // здесь указываем директория где есть только фото товаров

 

 Вообще сделайте бекапы и пробуйте внимательно. Если квалификации не хватает, лучше обратитесь к кому-то за помощью.

 

Link to comment
Share on other sites

  • 6 months later...
В 30.04.2018 в 18:25, sitecreator сказал:

Напишу ка я свое решение под это дело.  Бескомпромиссное и правильное.

Добрый день.

Решение написали или еще нет?

Link to comment
Share on other sites


56 минут назад, Amigo161 сказал:

Решение написали или еще нет?

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

 

Первая часть уже сделана. Релиз будет на днях.

Реализовано на данный момент:

 

1) ресайз больших изображений исходников до заданной величины.

Т. е. избавляемся от 6000*4000 и т.п.

 

2) преобразование неправильных PNG и JPEG в правильные.   Есть некая эпидемия, видимо благодаря какому-то модулю (импорта?) с очень грубой ошибкой когда файл с расширением JPEG внутри содержит формат PNG (и наоборот).  Например, Фотошоп такие изображения не переваривает, но современные браузеры научились.

Тут проблема не только в неправильном формате, а в том, что такой псевдо-JPEG раздут в размерах файла в несколько раз. Приводя к правильному формату мы одновременно также уменьшаем нелепо раздутый размер файла.

 

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

 

А вот очистка от неиспользуемых файлов стоит на втором месте, т. к. по сути эти файлы безобидны (в отличие от файлов, которые я описал в первой части) и лишь занимают лишнее место.   Это задача сейчас реализована в бета-версии.   Будет в следующем релизе. Планируется второй релиз в этом месяце.  А первый, повторюсь, будет на днях.

 

53b55f32b8.jpg

 

 

Link to comment
Share on other sites

  • 1 year later...
  • 1 month later...
  • 1 year later...
  • 2 years later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.