Удаление пустых папок в Upload

+35
4.22K
Сделал задание планировщика, которое запускает хук \system\controllers\files\hooks\cron_clear_upload.php, который сканирует папку upload и удаляет пустые папки.
Установка обычным способом. После установки появляется задача хрона, которая будет срабатывать в 4 часа и под покровом ночи удалять пустые каталоги.
Если вам не терпится посмотреть утилиту в работе — перейдите в Панель урправления — Настройки — Планировщик и стартаните вручную задание "Удаление пустых папок в Upload".
Имена удаленных папок будут выведены на экран.

Иллюстрация
СКАЧАТЬ
Дополнение перезалито.
Для обновления просто удалите задание хрона "Удаление пустых папок в Upload" в планировщике и установите дополнение заново.
+4
Loadырь Loadырь 6 лет назад #
Оперативно вы, +++

Осталось "смержить" это с чистильщиком и удобный компонент получится smile
+5
Ris Ris 6 лет назад #
Я в тот чистильщик смотрел долго, но, к сожалению, так принципа работы и не понял.
Поэтому у меня где-то валяется своя утилита для расчистки. Я её быстро запускаю и быстро удаляю нафиг с сайта, потому что в ней пароли к базе.
+4
vikont vikont 6 лет назад #
Спасибо! Успокоили! А то уж думал я один не понимаю этого Чистильщика!
Поделитесь своим Чистильщиком! Хотя бы тем что есть...
+1
Ris Ris 6 лет назад #
Что-то переделанное из чистильщика для первой ветки.
Вот из этого:
http://instantcms.ru/forum/thread21787-1.html#208213
Домой вернусь - посмотрю.
+1
Ris Ris 6 лет назад #
Посмотрел. Моя утилита удаляет неиспользованные фото из моих старых папок, которые я переносил с первой ветки.
Как удалять из аплоада двойки с его кашеобразной структурой - неизвестно.
Попробую запросить алгоритм на форуме в той же ветке.
+1
WebMan WebMan 6 лет назад #
Полезно!
1. По поводу вывода SessionMessage. Если у админа всю ночь открыт браузер и по крону почистятся папки, то при обновлении любой страницы эти системные сообщения будут выведены на ней. Сообщения сохраняются в сессию и выводятся при показе первой же страницы. Или я ошибаюсь?
2. Может можно отследить. что запуск идёт через крон и тогда их не выводить?
3. Второй момент, может не делать кучу сообщений, каждое для своей папки, а собрать весь список удалённых папок и вывести по окончании сканирования в одном сообщении?
+3
Ris Ris 6 лет назад #
Да, Вы правы.
Вечером дома доработаю. А то тут работать надо...
+1
Kreator Kreator 6 лет назад #
Если у админа всю ночь открыт браузер и по крону почистятся папки, то при обновлении любой страницы эти системные сообщения будут выведены на ней.
Системные сообщения пишутся в сессию того кто выполнял задачу. И выводятся автору сессии. Если задачу запустил Крон, то как записи попадут в вашу сессию?
+1
WebMan WebMan 6 лет назад #
Логично, не учёл. Спасибо. smile
+1
Ris Ris 6 лет назад #
Но мысль выдавать все удаленные файлы в одном сообщении была правильной!
+4
Def Def 6 лет назад #
а зачем вообще система создает пустые папки?
+2
Def Def 6 лет назад #
Однозначно +
+2
R161Net R161Net 6 лет назад #
Плюс+Плюс Что и требовалось для чистки.
Спасибо огромное.
+1
TOPg TOPg 6 лет назад #
Спасибо! чистильщик наудалял, я уже убедился))
+1
Def Def 6 лет назад #
главное чтобы не удалил с картинками:)
+1
R161Net R161Net 6 лет назад #
У меня беда при установке..
503 Service Unavailable
Please, enable debug mode in the site settings

Ошибка в запросе БД:
Unknown column 'is_strict_period' in 'field list'

INSERT INTO `cms_scheduler_tasks` (`id`, `title`, `controller`, `hook`, `period`, `is_strict_period`, `date_last_run`, `is_active`, `is_new`) VALUES (NULL, 'Удаление пустых папок в Upload', 'files', 'clear_upload', '1430', NULL, '2018-02-01 04:00:00', '1', '0')
Последние вызовы:

install_package()
call_user_func() @ /system/controllers/admin/actions/install_finish.php : 316
actionAdminInstallFinish->runPackageInstaller() @ /system/controllers/admin/actions/install_finish.php : 29
actionAdminInstallFinish->run()
call_user_func_array() @ /system/core/controller.php : 461
cmsController->runExternalAction() @ /system/core/controller.php : 379
cmsController->runAction()
call_user_func_array() @ /system/core/action.php : 29
cmsAction->__call() @ /system/controllers/admin/actions/install.php : 12
actionAdminInstall->runAction() @ /system/controllers/admin/actions/install.php : 12
actionAdminInstall->run()

Что это может быть?
+1
Ris Ris 6 лет назад #
Я на 2.9 это делал. Там есть такая функция "Строгое следование периоду". В 2.8.2 такого нет.
Переделал, перезалил.
Попробуйте скачать еще раз.
http://instantcms.ru/users/files/download6804.html
+1
R161Net R161Net 6 лет назад #
Спасибо ОГРОМНОЕ все получилось..
+1
Алексей Алексей 6 лет назад #
Что это может быть?
MegaRostov, это карма facepalm
+1
R161Net R161Net 6 лет назад #
Это точно! Что то у меня последнее время все как то через "режим отладки"
+3
RSN RSN 6 лет назад #
Ris , отлично, только в архиве для версии 2.8.2 поправьте в install.php запрос к базе префикс не cms_ scheduler_tasks, а cms_scheduler_tasks для тех у кого префикс другой.

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

Спойлер
+1
Ris Ris 6 лет назад #
Спасибо за найденный недочет!
Изменил, перезалил.
+1
Def Def 6 лет назад #
не выкладывали еще в общий каталог дополнений? будет полезно там его находить)
+1
Ris Ris 6 лет назад #
Причешу и выложу.
Вон пара багов нашлась, может еще найдутся.
Сейчас кто-нибудь напишет, что с сайта удалилась прижизненная фотография А.С.Пушкина и пойду посыпать голову пеплом...
+1
Jestik Jestik 6 лет назад #
Это ж фейк) не существует ее, та разница между первой фото в истории и его смертью 10 лет, но за 10 лет технология не сильно улучшилась, и получить то качество которое якобы его фото было не реально
+1
Ris Ris 6 лет назад #
Я знаю.
+4
Ris Ris 6 лет назад #
Вот нашел еще несколько косяков, кое-что улучшил и можно выкладывать.
+1
AS31 AS31 6 лет назад #
Люди а где скачать то.
Нажимаю скачать пишет файл не найден
+1
Ris Ris 6 лет назад #
Глюк какой-то. Перезалил.
+1
R161Net R161Net 6 лет назад #
Подскажите если я установил версию которая была первой без улучшений, и сейчас скачал свежую ее просто перезалить через ftp или можно устанавливать через админику?
+1
Ris Ris 6 лет назад #
Просто перезалить по ftp.
Разница только в отображении списка удаленных папок..
+1
vikont vikont 6 лет назад #
Пустые папки удаляет замечательно!
А как на счет удаления "потерянных" файлов изображений? Тех что нигде не используются.
+5
Ris Ris 6 лет назад #
Процесс получения списка используемых почти налажен.
+1
vikont vikont 6 лет назад #
Спасибо! Как и многие, весь в ожидании!
+2
Ris Ris 6 лет назад #
Можете пока написать регулярку, которая будет отличать /u32/rge/fgcb/65ffgr6ubfg87.jpg от photka_is_interneta.jpg
-2
Андрей Андрей 6 лет назад #
Я поставил, всё чистит, но у меня два недостатка:
1. Задача автоматом не запускается. (остальные задачи по крону работают норм)
2. Удаляет папку installer (я ее кончено закидываю обратно, но тоже вручную)
Подскажите, что я делаю не так?
+3
Ris Ris 6 лет назад #
Да, при срабатывании по хрону выдает ошибку. Вручную работает нормально.
Сейчас исследую, в чем может быть проблема.
+1
Ris Ris 6 лет назад #
Исправил. Навешал везде сепараторов, как на молокозаводе.
Перезалил версию.
Для обновления просто удалите задание хрона "Удаление пустых папок в Upload" в планировщике и установите дополнение заново.
-2
Андрей Андрей 6 лет назад #
Сейчас всё правильно работает!
+1
DeusSpa DeusSpa 6 лет назад #
Хорошее дополнение +

Вот только поправьте не удалять папку installer иначе удаляет и потом дополнения не поставить - пишет ошибку распаковки.
Не все потом догадаются создать её заново при установке дополнений.
+1
Pro AV Pro AV 6 лет назад #
У вас в 15 строке исключение 'upload\installer' не обрабатывается, потому что 'upload/installer' != 'upload\installer'
15стр.: if([] === (array_diff(scandir($v), array('.', '..'))) && $v != 'upload\installer' && $v != 'upload\files' ){
+1
Олег Васильевич я Олег Васильевич я 6 лет назад #
Просмотрел 8 сайтов с помощью утилиты.
Пустые папки обнаружил на 3-х из них. Вся тройка обновляется с версий старше 2.7.2. Ни одной пустой папки на сайтах изначально сделанных на версиях моложе 2.7.2 не обнаружено.
Ris, спасибо за дополнение!
Dark Space Dark Space 5 лет назад #
Комментарий удален
Dark Space Dark Space 4 года назад #
Комментарий удален
+1
Ris Ris 4 года назад #
Да, можно. Но Вам это пока не нужно.
Dark Space Dark Space 4 года назад #
Комментарий удален

Еще от автора

Сверхлёгкий webserver на Alpine linux
Не знаю, как нормальных людей, но меня всё время мучает вопрос, зачем для размещения небольшого сайта на виртуальном сервере я вынужден устанавливать
Накрутка рейтинга и кармы пользователям, контенту и фото.
По многочисленным просьбам изготовил новый инструмент для изменения администратором сайта рейтинга и кармы пользователей.
Авторизация по любым полям из профиля и по API
Представляю уважаемому сообществу небольшое дополнение для доработки авторизации вашего сайта, а также для интеграции двух сайтов на Instantcms друг с
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.