masterro / laravel-file-cleaner
Laravel 控制台命令,用于删除临时文件及其关联的模型实例。
1.7.0
2020-09-24 10:16 UTC
Requires
- php: >=5.5.9
- illuminate/console: ^5.1|^5.2|^5.3|^5.4|^6.0|^7.0|^8.0
- illuminate/database: ^5.1|^5.2|^5.3|^5.4|^6.0|^7.0|^8.0
- illuminate/filesystem: ^5.1|^5.2|^5.3|^5.4|^6.0|^7.0|^8.0
- illuminate/support: ^5.1|^5.2|^5.3|^5.4|^6.0|^7.0|^8.0
- nesbot/carbon: ^1.21|^2.1
Requires (Dev)
- orchestra/testbench: >3.0
- phpunit/phpunit: ~4.0|~5.0|~6.0
Suggests
- masterro/laravel-flashes: v0.1.0
- masterro/laravel-fresh-start: v1.0.0
README
Laravel 文件清理器
File Cleaner 是一个为 Laravel 5+ 提供删除文件及其关联模型实例的包。
安装
步骤 1: Composer
在命令行中运行
composer require masterro/laravel-file-cleaner
步骤 2: 服务提供者(对于 Laravel < 5.5)
对于您的 Laravel 应用,打开 config/app.php 文件,并在 providers 数组中追加
MasterRO\LaravelFileCleaner\FileCleanerServiceProvider::class
这将引导包进入 Laravel。
步骤 3: 发布配置
首先,在命令行中运行
php artisan vendor:publish --provider="MasterRO\LaravelFileCleaner\FileCleanerServiceProvider"
之后,您将在配置目录中看到 file-cleaner.php 文件
对于此包,您可以设置如下配置
paths- 存储临时文件的路径(或将要存储),相对于根目录excluded_paths- 要排除的目录路径,其中不会删除任何内容,相对于根目录excluded_files- 要排除的文件路径,不会删除,相对于根目录time_before_remove- 文件将在删除之前的时间 | 默认 60 分钟model- 将与关联文件一起删除的模型 | 可选file_field_name- 包含删除文件名称的字段名称 | 可选,仅当设置模型时remove_directories- 删除目录标志,如果设置为 true,则将删除所有嵌套目录 | 默认 truerelation- 关系,仅当模型实例未设置关系时才删除文件和模型实例
投票回调
此外,您还可以设置静态投票回调或可调用对象,以对删除逻辑有更大的控制权。
您可以在您的服务提供者之一中注册它。回调将在 time_before_remove 和 excluded_* 检查之后被调用。
FileCleaner::voteDeleteUsing(function($path, $entity) { if (isset($entity) && !$entity->user->isActive()) { return true; } return false; });
如果回调返回 true,则文件和可选的关联记录将在数据库中删除。
如果回调返回 false,则文件和记录不会删除。
否则将执行 relation 检查。
用法
调度
向调度函数添加新的命令调用
如果您需要任何帮助,请查看 Laravel 的任务调度文档。
protected function schedule(Schedule $schedule) { $schedule->command('file-cleaner:clean')->everyMinute(); }
这就是全部。如果您的 cron 设置正确,一切都会按预期工作。
手动,使用 artisan 控制台
您可以手动运行删除,只需从命令行运行
php artisan file-cleaner:clean
并查看输出。
或者,如果您想不检查时间就删除文件(仅删除所有设置目录中的所有文件)使用 --force 标志(或 -f 快捷键)
php artisan file-cleaner:clean -f
您甚至可以使用 --directories、--excluded-paths 和 --excluded-files 选项(用逗号分隔)覆盖配置目录中的 paths、excluded_paths 和 excluded_files 值
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 配置值
php artisan file-cleaner:clean -f --directories=storage/temp/images,public/uploads/test --remove-directories=false