Вашему вниманию предлагается утилита для очистки папки upload от неиспользуемых изображений.
Написана @fazer на языке PERL. Все благодарности и плюсы в карму сюда: @fazer
Так как @fazer не имеет пока достаточно кармы для своего блога, выкладываю эту разработку по его просьбе в своем блоге.
Благодаря использованию перла, поиск в базе теперь не приводит к падению сервера mysql на больших таблицах.
Утилита представляет из себя файл написанный на перле, который срабатывает по заданию планировщика или вручную из админки.
В настройках компонента можно настроить расширения, которые будут удаляться, поля в базе, в которых будут искаться ссылки на картинки, папки в которых будет производиться поиск ненужных файлов и папки, которые
не участвуют в поиске.
Лишние файлы переносятся в папку /upload/deleted, которую можно очистить потом. Также при работе скрипта создается лог удаляемых файлов cleaner_files.txt в папке upload.
По просьбе @fazer я прикрутил к его скрипту настройки и оформил всё это в виде компонента для установки.
После установки компонента нужно перейти в Панель управления — Компоненты — Очистка upload и настроить компонент.
После этого нужно перейти в Настройки — Планировщик и настроить время запуска задания планировщика "Очистка upload".
Если хочется сразу проверить работоспособность компонента — можно запустить это задание вручную.
Работает только под линуксом, на опенсервере не хватает библиотек.
Для работы компонента требуется установленные на сервере библиотеки perl
libdbi libdbd-mysql DB_File
устанавливаются в зависимости от оп.системы хостинга
yum install perl-DBI perl-DBD-MySQL perl-DB_File
или
apt-get install libdbi-perl libdbd-mysql-perl
Мне помогло под вестой вот это:
yum install perl-DB_File
Написана @fazer на языке PERL. Все благодарности и плюсы в карму сюда: @fazer
Так как @fazer не имеет пока достаточно кармы для своего блога, выкладываю эту разработку по его просьбе в своем блоге.
Благодаря использованию перла, поиск в базе теперь не приводит к падению сервера mysql на больших таблицах.
Утилита представляет из себя файл написанный на перле, который срабатывает по заданию планировщика или вручную из админки.
В настройках компонента можно настроить расширения, которые будут удаляться, поля в базе, в которых будут искаться ссылки на картинки, папки в которых будет производиться поиск ненужных файлов и папки, которые
не участвуют в поиске.
Лишние файлы переносятся в папку /upload/deleted, которую можно очистить потом. Также при работе скрипта создается лог удаляемых файлов cleaner_files.txt в папке upload.
По просьбе @fazer я прикрутил к его скрипту настройки и оформил всё это в виде компонента для установки.
После установки компонента нужно перейти в Панель управления — Компоненты — Очистка upload и настроить компонент.
После этого нужно перейти в Настройки — Планировщик и настроить время запуска задания планировщика "Очистка upload".
Если хочется сразу проверить работоспособность компонента — можно запустить это задание вручную.
ВНИМАНИЕ!
Если Вы не знаете, что настраивать в компоненте — просьба не скачивать и не устанавливать этот компонент, он Вам не нужен.Работает только под линуксом, на опенсервере не хватает библиотек.
Для работы компонента требуется установленные на сервере библиотеки perl
libdbi libdbd-mysql DB_File
устанавливаются в зависимости от оп.системы хостинга
yum install perl-DBI perl-DBD-MySQL perl-DB_File
или
apt-get install libdbi-perl libdbd-mysql-perl
Мне помогло под вестой вот это:
yum install perl-DB_File
Реклама #
Андрей 5 лет назад #
Если да, то как корректно удалить его, чтобы поставить новый? Спасибо.
Ris 5 лет назад #
Если не знаете как удалить - просто не трогайте.
Андрей 5 лет назад #
Ris 5 лет назад #
Андрей 5 лет назад #
sindoyun 5 лет назад #
Ris 5 лет назад #
Artamos 5 лет назад #
Notice: Undefined offset: 0 in /var/www/user/data/www/site.ru/system/controllers/content/widgets/list/widget.php on line 108
Notice: Undefined offset: 1 in /var/www/user/data/www/site.ru/system/controllers/content/widgets/list/widget.php on line 108
Fatal error: Uncaught Error: Call to a member function limit() on null in /var/www/user/data/www/site.ru/system/controllers/content/widgets/list/widget.php:112 Stack trace: #0 /var/www/user/data/www/site.ru/system/core/core.php(906): widgetContentList->run() #1 /var/www/user/data/www/site.ru/system/core/core.php(867): cmsCore->runWidget(Array) #2 /var/www/user/data/www/site.ru/index.php(49): cmsCore->runWidgets() #3 {main} thrown in /var/www/user/data/www/site.ru/system/controllers/content/widgets/list/widget.php on line 112
При отключении компонента сайт работает нормально.
Еще бы при проверке статистику на почту или в лс отправлял, какие файлы и папки удалены, а то непонятно, делает что-то или нет.
fazer 5 лет назад #
Вы можете создать другое задание cron которое(например через час после очистителя) отправит вам на почту логи:
cleaner_dirs.txt, cleaner_errors.txt, cleaner_files.txt... ну или смотрите их непосредственно на сайте
http://www.site.ru/upload/cleaner_files.txt
Ris 5 лет назад #
Исправил, файл перезалил.
Просто скачайте еще раз и установите заново.
Ris 5 лет назад #
Кто не хочет устанавливать заново - удалите файл /system/controllers/cleaner/manifest.php и обновите события в админке.
vikont 5 лет назад #
А можно вместо @fazer от кого то другого очищать папку upload?
Хотя тоже вопрос:"А что @fazer делает в папке...?"
ПС.:Это конечно шутка. Компонент очень нужен и такими темпами его развития, скоро очутится в коробке! Где ему и место! Не хватает только защиты от дурака.
Ris 5 лет назад #
fazer 5 лет назад #
какой бы вы могли предложить доп алгоритм от криворуких ? :)
RSN 5 лет назад #
Похоже все таки можно будет довести процедуру очистки до "без танцев с бубном".)
noname 5 лет назад #
vikont 5 лет назад #
Ris 5 лет назад #
Тогда резко сужается поиск возможного нахождения файла картинки.
Логическая цепочка такая:
Неиспользуемые файлы образуются двумя способами:
1. Добавление картинки без добавления ссылки в базу.
2. Изменение контента без корректного удаления изображений.
Отсюда мораль: если ссылка на картинку сопоставлена с user_id = 304, значит сама картинка должна лежать в папке /upload/003/u304/ и именно там её и следует искать, а не шариться по всему upload.
fazer 5 лет назад #
в базе если есть упоминание картинки то поиск по id user уже ни к чему, мы не ищем в аплоад по ссылкам, мы сравниваем имена катринок с наличием имени в базе...,
опять же, аплоад рекурсивно проходится - дольше выяснять чья это картинка чем сравнить её имя с наличием его(имени) в базе
SALIK 5 лет назад #
Ris 5 лет назад #
Никто не затыкается и дорабатывает до конца.
Если при ручном запуске апач выдает ошибку - просто подождите минут 10. Оно работает в фоне.
SALIK 5 лет назад #
SALIK 5 лет назад #
Ris 5 лет назад #
В любом случае, помолимся за успех предприятия!
ermakover 4 года назад #
Кто-нибудь пробовал чистить upload ? Каковы результаты?
Ris 4 года назад #
/users/9500/files.html
ermakover 4 года назад #
Правда, удалились аватары, но это потому, что они у меня в папке upload/avatars потому, что для аватаров используется поле с обрезкой.
И ещё заметил, что удаляются картинки в виджетах. У меня так ссылки на группы св соцсетях реализованы. Но я их в корень сайта закинул, чтобы больше не удалялись.
Пока больше не нашёл "криминальных" удалений.
А посему - огромное спасибо Ris и @fazer
ermakover 4 года назад #
Ris 4 года назад #
Ни fazer ни я не владеем компонентом видео.
ermakover 4 года назад #
И для меня эти обложки такая ерунда по сравнению с остатками картинок от удалённых объявлений, которых набралось 14 ГБ.
ermakover 4 года назад #
У меня есть тип контента "Собаки" и там поля изображений - сама собака, и два поля изображений - папа и мама собаки.
Утилита снесла напрочь все поля, хотя имена у них не совпадают с теми, что в настройках утилиты.
Причём, все эти файлы картинок распихались по разным папкам, искать и восстанавливать - это не вариант.
Вот такие дела.
То есть, я так понимаю, что утилита видит не известные ей поля изображений и из них убирает всё.
А вот в питомниках, в объявлениях, в статьях всё ОК.
Ris 4 года назад #
ermakover 4 года назад #
Ris 4 года назад #
ermakover 4 года назад #
Pawell 1 год назад #
Здравствуйте. На 2.16.0 запустил компонент: «Задача очистка папки upload выполнена». Но никакого результата не получил. Вес папки upload не изменился. Я так понял файл /upload/cleaner_files.txt и папка deleted должны были сами создасться? Но их нет. Работает ли компонент на крайней версии системы?
Викторыч 9 месяцев назад #
Ris, аналогичный вопрос, только для версии 2.16.2 — работоспособен ли компонент? На Openserver проверить же не получится.
DeeMon 9 месяцев назад #
Поставить дубликат на субдомен, с дублем БД, там тестить
Викторыч 9 месяцев назад #
Дык нет уже места, чтобы дубли ставить. Потому и хочется от соавтора утилиты хотя бы подтверждение услышать, как в каталоге — «Совместимо с версией ...» )
DeeMon 9 месяцев назад #
Ого раскрутился :-)
Викторыч 9 месяцев назад #
Да не так что бы. Но народ наш в картинках удержу не знает, поэтому проблема скоро встанет в полный рост. ) Эта утилита позволит сэкономить немало времени, перед тем как переходить на более дорогой тариф. Лишь бы работала… вот это я и хочу узнать. )
Ris 9 месяцев назад #
У меня где-то валяется то, что работает и на опенсервере.
Найду — выложу.
Нашел.
instantcms.ru/blogs/lunyi-blog/chistilshik-dlja-dvoiki.html#comment_120209
Викторыч 9 месяцев назад #
Хорошо, когда выбор есть! ) Я по обеим утилитам почитал внимательно, а по чистильщику от Фазера спрашивал, потому что он меньшую нагрузку на сервер дает… Впрочем, с моей БД, думаю, оба справятся быстро, она еще не очень большая. Спасибо! )