列出大型目录中的少量文件

时间:2017-05-03 12:26:16

标签: php windows

我有一个包含大约10,000个文件的文件夹。大约每0.5-2小时出现一个新文件,这表明进程已完成。我想使用这个指标来跟踪每天完成的进程数量,并在电视上显示该数字,但是我尝试的每种方法看起来都非常慢。

我已经尝试了在SO(glob,scandir,DirectoryIterator等)上找到的几种不同的方法,没有一种方法能够快速完成(至少是IMO)。搜索通常需要大约30秒和/或超时。如果可能的话,我希望搜索时间不到5秒,这样每5分钟左右运行一次,并在电视屏幕上显示半直播。

我只需要知道当天添加了哪些文件,而不是其他任何文件。我甚至可以通过列出前50个文件和getmtime来解决问题,并从那里进行解析,但是上面的所有方法都必须遍历目录中的每个文件。

我的最后一个方法是使用Robotask每天将新文件移动到另一个文件夹(然后在12:00清除它),但如果可能的话,我想用PHP完成所有这些。

有人有任何想法吗?似乎我搜索的每一种方式都使用相同的4-5 SO线程,并使用上述方法。

1 个答案:

答案 0 :(得分:0)

将存档移动到新文件夹。当PHP运行时,让它对当前文件夹中的文件进行计数,在某处更新文件计数,然后将这些“新文件”移至存档中。

这一切都取决于文件为何存在...但是应该可以使用。 您需要回头看看上周四完成了什么吗?

基本问题是收件箱和归档文件混合在一起,并且归档文件已经足够大,以至于单一文件夹的双重用途现在成为问题。