如何计算目录中的大量文件

时间:2019-04-23 00:24:43

标签: laravel apache php-7

我正在尝试使用Laravel的Storage类一次生成并计数大量的小json文件(例如数百万个)。

我尝试了count(Storage::files(PATH)),但由于有数百万个事实,因此无法正常工作。

首先,它返回执行时间超过30秒的错误,因此我尝试了max_execution_time的运行,但是现在运行了一段时间后,它返回了空白页,不知道出了什么问题

我希望有一种巧妙的方法来有效地计算所有文件 也许作为块(我不认为存储具有功能)  或对过程进行任何形式的优化,可能有助于阻止它崩溃

有什么帮助吗?

2 个答案:

答案 0 :(得分:3)

我将使用PHP的{​​{1}}进行此操作-您的操作系统已经知道目录中的文件数。它会对其进行索引,那么为什么不使用它呢?超级干净。

exec

请注意,该<?php exec('ls -l /path/to/your/json/files | grep ^- | wc -l', $out); echo $out[0]; 返回一个数组-因此,您需要在exec

上使用索引0

更新 –我使用以下工具测试了3,000,000个文件的运行情况–生成的php $out函数在<20秒内运行。

exec

答案 1 :(得分:0)

即使将max_execution_time增加到1小时,它肯定也会在10分钟左右的任何时间超时,这就是为什么页面空白的原因。

@Zak的解决方案是您最好的选择。