我正试图构建一个自定义artisan命令,每天清理我的文件系统,这有几个步骤,我想不出一种不 destruct 内存的方法.有数千个文件夹和数十万用户.
我需要做的是;
- 获取所有超过50天的文件夹(基于下面的文件夹 struct )
- 从这些收集的文件夹中,查询用户id(即下面的嵌套文件夹名称),并判断数据是否已完成
$user->isCompleted()
- 如果该用户数据已完成,则删除存储该用户数据的目录
在我的文件系统中,我根据日期存储了每个用户id的数据,所以文件系统看起来是这样的;
data/2022-01-15/7482947
data/2022-01-15/7482946
data/2022-01-15/7482945
data/2022-01-16/2353234
data/2022-01-16/2353233
data/2022-01-16/2353232
格式为;
data/<date>/<user_id>
到目前为止,我已经使用下面的代码返回了超过50天的文件夹,但我不确定如何继续获取嵌套文件夹,然后查询数据库
collect(Storage::directories('data/'))
->filter(function ($directory) {
$directoryDate = Str::after($directory, '/');
if (! Carbon::parse($directoryDate)->lte(now()->subDays(50))) {
return false;
}
return true;
});
任何帮助都将不胜感激.