如何统计目录中的大量文件
How to count a large number of files in a directory
我正在尝试使用 Laravel 的存储 class.
一次生成并计算大量小 json 文件(比如数百万个)
我试过 count(Storage::files(PATH))
但由于有数百万个,所以没用。
首先它返回执行时间超过 30 秒的错误,所以我尝试提高 max_execution_time
但现在在 运行 一段时间后它 returns 一个空白页没有线索出了什么问题
我希望有某种聪明的方法来有效地计算所有文件
也许像大块一样(我不认为存储具有这种功能)
或任何可能有助于阻止其崩溃的流程优化
有什么帮助吗?
我会用 PHP
的 exec
来做到这一点——你的 OS 已经知道目录中的文件数..它索引了它,所以为什么不使用它?超级快速和干净。
<?php
exec('ls -l /path/to/your/json/files | grep ^- | wc -l', $out);
echo $out[0];
注意这个exec
returns是一个数组——所以你需要在$out
[=17上使用索引0 =]
UPDATE -- 我测试使用以下创建 3,000,000 个文件 -- 结果 php exec
函数 运行 < 20秒。
#!/bin/bash
max=3000000
for i in `seq 2 $max`
do
echo "$i" > $i.json
echo "$i"
done
即使您将 max_execution_time
增加到 1 小时,它肯定会在 10 分钟左右的任何时候超时,这就是您得到空白页的原因。
@Zak 的解决方案是您最好的选择。
我正在尝试使用 Laravel 的存储 class.
一次生成并计算大量小 json 文件(比如数百万个)我试过 count(Storage::files(PATH))
但由于有数百万个,所以没用。
首先它返回执行时间超过 30 秒的错误,所以我尝试提高 max_execution_time
但现在在 运行 一段时间后它 returns 一个空白页没有线索出了什么问题
我希望有某种聪明的方法来有效地计算所有文件 也许像大块一样(我不认为存储具有这种功能) 或任何可能有助于阻止其崩溃的流程优化
有什么帮助吗?
我会用 PHP
的 exec
来做到这一点——你的 OS 已经知道目录中的文件数..它索引了它,所以为什么不使用它?超级快速和干净。
<?php
exec('ls -l /path/to/your/json/files | grep ^- | wc -l', $out);
echo $out[0];
注意这个exec
returns是一个数组——所以你需要在$out
[=17上使用索引0 =]
UPDATE -- 我测试使用以下创建 3,000,000 个文件 -- 结果 php exec
函数 运行 < 20秒。
#!/bin/bash
max=3000000
for i in `seq 2 $max`
do
echo "$i" > $i.json
echo "$i"
done
即使您将 max_execution_time
增加到 1 小时,它肯定会在 10 分钟左右的任何时候超时,这就是您得到空白页的原因。
@Zak 的解决方案是您最好的选择。