scandir和glob遍历文件夹目录,以及两者效率性能测试对比
php遍历文件夹目录常用的两个内置函数:scandir和glob
先看官方说明:
其中glob方法用起来比较方便,并且支持通配符。
列举一些DEMO,如下:
1、遍历目录下所有文件
<?php print_r(glob('./data/*.*')); ?>
2、遍历目录下指定后缀文件
<?php print_r(glob('./data/*.html')); ?>
3、遍历目录下的子目录
<?php print_r(glob('./data/*',GLOB_ONLYDIR)); ?>
看起来是不是感觉glob比scandir好用多了,下面开始测试性能,对比一下。
测试环境说明:window系统,CPU:i5-4460,内存:8G,服务器:Apache,php版本:7.3.4
测试数据说明:data文件夹中有10个子文件夹,其中a文件夹有4909个html文件,data文件夹下所有文件数量为:39795个
附图片:
单文件夹遍历测试:
代码程序:
运行结果对比:
可以看到,scandir和glob占用的内存都一样,耗时差别很大,4909个文件遍历相差0.329秒,目前来看scandir更好
接下来测试多文件夹遍历
多文件夹遍历测试:
代码程序:
运行结果对比:
data下所有的子目录一共有39795个文件夹,scandir遍历用了0.074秒,而glob却用了2.8152秒,差不多是scandir的38倍了,,,,,可怕至极!
综合上述测试来说,遍历文件还是scandir效率更好、速度更快。
glob虽然起来很方法,但真挺耗时的,如果文件数量不大,可以考虑使用glob遍历
有 0 位网友评论: