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

+35
4.18K
Сделал задание планировщика, которое запускает хук \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' ){
Олег Васильевич я Олег Васильевич я 6 лет назад #
Комментарий удален
0
Dark Space Dark Space 5 лет назад #
Полезное дополнение, легко все почистилось, сайт похудел в весе, благодарю!
+1
Dark Space Dark Space 4 года назад #
На 13.1 ставить можно? Спасибо.
+1
Ris Ris 4 года назад #
Да, можно. Но Вам это пока не нужно.
0
Dark Space Dark Space 4 года назад #
Сразу удобней. Если в альбоме 50 фото, 50 пустых папок автоматически добавляется при создании.

Еще от автора

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