LaravelFileCleaner - это пакет для Laravel 5, который позвлоляет удалять временные файлы и связанные с ними сущности модели (при необходимости).
В коммандной строке:
composer require masterro/laravel-file-cleaner
Откройте файл config/app.php
и добавьте в массив providers
:
MasterRO\LaravelFileCleaner\FileCleanerServiceProvider::class
Таким образом мы подключим пакет в автозагрузку Laravel.
Для начала в коммандной строке пишем:
php artisan vendor:publish --provider="MasterRO\LaravelFileCleaner\FileCleanerServiceProvider"
После чего в директории config
появится файл file-cleaner.php
Для текущей версии пакета доступны слледующие настройки:
- Массив путей к папкам, где храняться (или будут хранится) файлы для удаления | пути относительно корневого каталога.
- Массив путей к папкам, файлы и одпапки которых не будут удалены | пути относительно корневого каталога.
- Массив путей к файлам, которые не будут удалены | пути относительно корневого каталога.
- Время, после которого файлы будут удалены | по умолчанию 60 минут
- Модель, сущности которой будут удалены вместе с привязанными файлами | не обязательно
- Имя поля в таблице модели, которое хранит имя привязанного файла | не обязательно, работает только если указана модель
- Флаг указывающий на то удалять или не удалять пустые папки после удаления файлов | по умолчанию true
- Релейшн, если указан то файлы и сущности будут удалены только в случае если связанной сущности нет
Добавьте вызов команды в фукцию schedule
:
Документация по Task Scheduling, если есть вопросы.
protected function schedule(Schedule $schedule)
{
$schedule->command('file-cleaner:clean')->everyMinute();
}
И это все что нужно для работы пакета. Если вы настроили крон правильновсе будет работать.
Вы можете запустить удаление вручную прописав в консоли:
php artisan file-cleaner:clean
Удаляться только те файлы, которые храняться больше указанного в настройках времени.
Или если нужно удалить все файлы без проверки на время (просто удалить все файлы из указанных директорий):
php artisan file-cleaner:clean -f
Вы даже можете переопределить значения конфига paths
, excluded_paths
и excluded_files
используя --directories
, --excluded-paths
and --excluded-files
options (разделяя запятой):
php artisan file-cleaner:clean -f --directories=storage/temp/images,public/uploads/test
php artisan file-cleaner:clean -f --excluded-paths=public/uploads/images/default,public/uploads/test
php artisan file-cleaner:clean -f --excluded-files=public/uploads/images/default.png,public/uploads/test/01.png
Также можно переопределить значени конфига remove_directories
используя --remove-directories
option:
php artisan file-cleaner:clean -f --directories=storage/temp/images,public/uploads/test --remove-directories=false