使用php递归计算目录大小
2015-06-28 16:19
453 查看
统计一个目录大小,因为不知道目录中子目录的深度,所以for循环很难实现,但是用递归调用很容易实现,只要统计出一个目录中所有文件的大小,那么每一次调用就可以了,随便建了个目录,建立一些文件,方法代码如下:
这样就可以统计目录大小了,定义保存目录大小变量的时候要定义静态的变量或者全局变量,整个程序运行过程中一直存在,防止每次递归置零
注意目录'.'和'..'的处理,如果使用Linux那就再熟悉不过了
重点部分就几句代码,判断是文件还是目录,是文件进行累加计算,否则递归调用。
function dirsize($dirname){ static $sum=0; //静态变量,防止每次递归置零 $handle=opendir($dirname); while(($item=readdir($handle))!==false){ if($item!='.'&&$item!='..'){ if(is_file($dirname.'/'.$item)){ $sum+=filesize($dirname.'/'.$item); } if(is_dir($dirname.'/'.$item)){ //递归操作 $func=__FUNCTION__; $func($dirname.'/'.$item); //dirsize($dirname.'/'.$item); } } } closedir($handle); return $sum; } $filename='ssh'; $arr=dirsize($filename); echo ($arr/1024).'KB';
这样就可以统计目录大小了,定义保存目录大小变量的时候要定义静态的变量或者全局变量,整个程序运行过程中一直存在,防止每次递归置零
注意目录'.'和'..'的处理,如果使用Linux那就再熟悉不过了
重点部分就几句代码,判断是文件还是目录,是文件进行累加计算,否则递归调用。
相关文章推荐
- php文件下载
- php-zend studio
- YII获取刚插入数据的id主键
- PHP中的命名空间(namespace)及其使用详解
- 直接复制php的安装目录部署到其他服务器的时候,无法运行
- ubuntu安装xhprof
- PHP session机制小析
- FTP服务器搭建
- zend 快捷键
- Laravel5.1 学习笔记1, 目录结构和命名空间(待修)
- A Brief Introduction to PHP Namespacing
- PHP中的魔术方法和魔术常量
- 系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式
- PHP命令行下的世界
- Yii查询生成器(Query Builder)用法实例教程
- vsftpd.conf 详解与实例配置
- YII-1.16增加注册模块
- 使用php搭建自己的MVC框架
- php socket 处理不过来数据流,该如何避免(好像是阻塞了)
- 基于CakePHP实现的简单博客系统实例