laravel - 如何统计目录中的大量文件
问题描述
我正在尝试使用 Laravel 的 Storage 类一次生成和计算大量的小 json 文件(比如数百万个)。
我已经尝试过count(Storage::files(PATH))
,但由于有数百万个这样的事实,这并没有奏效。
首先它返回了一个执行时间超过 30 秒的错误,所以我尝试升级,max_execution_time
但现在运行一段时间后它返回一个空白页,不知道出了什么问题
我希望有一种聪明的方法来有效地计算所有文件,可能是块(我认为存储没有作为一种功能)或任何可能有助于阻止它崩溃的过程优化
请问有什么帮助吗?
解决方案
我会用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