gpt4 book ai didi

php - 按日期有效扫描目录树

转载 作者:搜寻专家 更新时间:2023-10-31 21:38:15 26 4
gpt4 key购买 nike

在 php 中获取给定日期之后的新文件列表的最有效方法是什么,或者使用系统调用?

当我收到文件时,我可以完全控制文件的存储方式,所以我认为最好将它们存储在像年/月/日/文件名这样的文件夹结构中,然后我所要做的就是扫描大于或等于我要使用 scandir 检索并将目录名称转换为 int 值的日期的目录。但我不确定我是否遗漏了一些能让这更容易/更快的东西。我对执行此操作的最有效方法很感兴趣,因为随着时间的推移会积累很多文件,我不想重新扫描旧目录。基本上,目录结构应该有助于高效的手动过滤,但我想检查一下是否遗漏了什么。

简单示例用法:

'2012/12/1' contains files test1.txt, test2.txt
'2012/12/2' => test3.txt, test4.txt
'2011/11/1' => test5.txt
'2011/11/2' => test6.txt

如果我在 2011/11/2 或之后搜索文件,那么我希望返回除 test5.txt 之外的所有内容。

提前感谢您的任何见解!

编辑:文件的存储和实际处理是两个独立的过程,所以我不能在它们进来时就处理它们,这显然是最好的解决方案。

最佳答案

一般来说,我会创建类似 YYYY/MM/DD 的目录来存储我的文件,通常为不同的来源创建另一个级别。有时我会使用 YYYY-MM/DD 或类似的东西。请注意,十年只有 3652 天,因此您甚至可以拥有像 YYYY-MM-DD 这样的单个级别,而不会获得大到难以使用的目录。如果你有一个索引目录的文件系统,你可以很容易地在一个目录中拥有数万个文件,否则一千个应该是你的上限。

为了处理这些文件,我没有费心去搜索目录名。因为我知道我感兴趣的日期,所以我可以简单地生成路径并只扫描包含正确日期范围内文件的目录。

例如,假设我想处理过去一周的所有文件:

for $date = today() - 7 to today():
$path = strftime("%Y/%m/%d", $date)
for $filename in getFiles($path):
processFile($path, $filename)

关于php - 按日期有效扫描目录树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14016312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com