PHP统计目录大小的自定义函数分享


Posted in PHP onNovember 18, 2014

计算文件、磁盘分区和目录的大小在各种应用程序中都是常见的任务。计算文件的大小可以通过前面介绍过的filesize()函数完成,统计磁盘大小也可以使用disk_free_space()和disk_total_space()两个函数实现。但PHP目前并没有提供目录总大小的标准函数,因此我们要自定义一个函数来完成这个任务。首先要考虑计算的目录中有没有包含其他子目录的情况,如果没有子目录,目录下所有文件的大小相加后的总和就是这个目录的大小。如果包含子目录,就按照这个方法再计算一下子目录的大小,使用递归函数看来最适合此项任务。计算目录大小的自定义函数如下所示:

<?php

//自定义一个函数dirSize(),统计传入参数的目录大小

function dirSize($directory){

  $dir_size = 0; //用来累加各个文件大小

 

  if($dir_handle = @opendir($directory)){      //打开目录,并判断是否能成功打开

    while($filename = readdir($dir_handle)){     //循环遍历目录下的所有文件

        if($filename != "."&& $filename != ".."){     //一定要排除两个特殊的目录

            $subFile = $directory."/".$filename;     //将目录下的子文件和当前目录相连

            if(is_dir($subFile))     //如果为目录

            $dir_size += dirSize($subFile);     //递归地调用自身函数,求子目录的大小

            if(is_file($subFile))     //如果是文件

            $dir_size += filesize($subFile);     //求出文件的大小并累加

        }

    }

    closedir($dir_handle);      //关闭文件资源

    return $dir_size;     //返回计算后的目录大小

  }

}

 

$dir_size = dirSize("phpMyAdmin");    //调用该函数计算目录大小

echo round($dir_size/pow(1024,1),2)."KB";    //字节数转换为“KB”单位并输出

?>

也可以使用exec()或system()函数调用操作系统命令“du”来返回目录的大小。但出于安全原因,这些函数通常是禁用的,而且不利于跨平台操作。

PHP 相关文章推荐
php中判断一个字符串包含另一个字符串的方法
Mar 19 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
Sep 22 PHP
自编函数解决pathinfo()函数处理中文问题
Nov 03 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
php生成图片验证码-附五种验证码
Aug 19 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
Nov 19 PHP
php实现按天数、星期、月份查询的搜索框
May 02 PHP
Yii2.0中使用js异步删除示例
Mar 10 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
Apr 23 PHP
php函数式编程简单示例
Aug 08 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
Apr 23 PHP
50个优秀经典PHP算法大集合 附源码
Aug 26 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
Nov 18 #PHP
PHP递归复制、移动目录的自定义函数分享
Nov 18 #PHP
PHP打开和关闭文件操作函数总结
Nov 18 #PHP
PHP文件读写操作相关函数总结
Nov 18 #PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 #PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
Nov 18 #PHP
PHP文件锁函数flock()详细介绍
Nov 18 #PHP
You might like
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
Apache+php+mysql在windows下的安装与配置图解(最新版)
2008/11/30 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
PHP自动重命名文件实现方法
2014/11/04 PHP
php中使用gd库实现下载网页中所有图片
2015/05/12 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
15款jQuery分布引导插件分享
2015/02/04 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
JS实现拖动滚动条评分的效果代码分享
2016/09/29 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
javascript 中Cookie读、写与删除操作
2017/03/29 Javascript
使用Bootstrap4 + Vue2实现分页查询的示例代码
2017/12/21 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
用Python创建声明性迷你语言的教程
2015/04/13 Python
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
python flask实现分页效果
2017/06/27 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
2017/07/17 Python
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
python 以16进制打印输出的方法
2018/07/09 Python
python 自动重连wifi windows的方法
2018/12/18 Python
python 实现敏感词过滤的方法
2019/01/21 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
Django使用Channels实现WebSocket的方法
2019/07/28 Python
python3 深浅copy对比详解
2019/08/12 Python
Pycharm如何运行.py文件的方法步骤
2020/03/03 Python
HTML5中的nav标签学习笔记
2016/06/24 HTML / CSS
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
《我的信念》教学反思
2014/02/15 职场文书
服装发布会策划方案
2014/05/22 职场文书
安全生产工作汇报材料
2014/10/28 职场文书
导游词之任弼时故居
2020/01/07 职场文书
对讲机知识
2022/04/07 无线电