首页 > 解决方案 > 如何统计目录中的大量文件

问题描述

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

我已经尝试过count(Storage::files(PATH)),但由于有数百万个这样的事实,这并没有奏效。

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

我希望有一种聪明的方法来有效地计算所有文件,可能是块(我认为存储没有作为一种功能)或任何可能有助于阻止它崩溃的过程优化

请问有什么帮助吗?

标签: laravelapachephp-7

解决方案


我会用PHP's来做到这一点exec——你的操作系统已经知道目录中的文件数..它索引它,那么为什么不使用它呢?超级快速和干净。

<?php

exec('ls -l /path/to/your/json/files | grep ^- | wc -l', $out);
echo $out[0];

请注意,这会exec返回一个数组——所以你需要使用 0 的索引$out

更新 ——我使用以下测试创建 3,000,000 个文件——生成的 phpexec函数在 < 20 秒内运行。

#!/bin/bash
max=3000000
for i in `seq 2 $max`
do
    echo "$i" > $i.json
    echo "$i"
done

推荐阅读