php获取某个目录大小的代码


Posted in PHP onSeptember 10, 2008

大致程序思想就是使用递规来计算目录占用空间多少, 然后再把这个占用空间的值写进文本文件里, 那么只要访问这个txt文件就知道占用了多少空间, 不用频繁获取而读磁盘, 节省资源. 每次用户如果上传的文件或者删除了文件, 那么又重新进行统计. 当然, 也可以把统计结果保存到数据库里.

function countDirSize($dir) 
{ 
$handle = opendir($dir); 
while (false!==($FolderOrFile = readdir($handle))) 
{ 
if($FolderOrFile != "." && $FolderOrFile != "..") 
{ 
if(is_dir("$dir/$FolderOrFile")) { 
$sizeResult += getDirSize("$dir/$FolderOrFile"); 
} else { 
$sizeResult += filesize("$dir/$FolderOrFile"); 
} 
} 
} 
closedir($handle); 
return $sizeResult; 
}

把字节转换为正常的K啊M啊之类的函数:
function get_real_size($size) { $kb = 1024; // Kilobyte 
$mb = 1024 * $kb; // Megabyte 
$gb = 1024 * $mb; // Gigabyte 
$tb = 1024 * $gb; // Terabyte 
if($size < $kb) { 
return $size." B"; 
}else if($size < $mb) { 
return round($size/$kb,2)." KB"; 
}else if($size < $gb) { 
return round($size/$mb,2)." MB"; 
}else if($size < $tb) { 
return round($size/$gb,2)." GB"; 
}else { 
return round($size/$tb,2)." TB"; 
} 
}

用法很简单:
$size_zip=countDirSize("../zip/"); 
$size_zip=get_real_size($size_zip);

就这么简单了,呵呵。
<? 
/** 
* File: fetch user directory use size 
* Author: heiyeluren <heiyeluren_AT_gmail_com> 
* Create: 2005-9-19 16:20 
* Modifed: 2005-9-19 16:41 
*/ /*** 基本函数 ***/ 
//计算目录大小 
function countDirSize(dir) 
{ 
handle = opendir(dir); 
while (false!==(FolderOrFile = readdir(handle))) 
{ 
if(FolderOrFile != "." && FolderOrFile != "..") 
{ 
if(is_dir("dir/FolderOrFile")) { 
sizeResult += getDirSize("dir/FolderOrFile"); 
} else { 
sizeResult += filesize("dir/FolderOrFile"); 
} 
} 
} 
closedir(handle); 
return sizeResult; 
} 
//保存用户文件大小 
function saveDirSize(userDir) 
{ 
userDirSize = countDirSize(userDir); 
if (!fp = fopen(userDir."/dir_size.txt", "w+")) { 
die("Open file failed"); 
} else { 
fwrite(fp, dirSize); 
} 
} 
//获取用户目录的大小 
function getDirSize(userDir) 
{ 
user = addslashes(userDir); 
sizeFile = userDir."/dir_size.txt"; 
if (!fp = fopen(sizeFile, "r") { 
return 0; 
} else { 
dirSize = fread(fp, filesize(sizeFile)); 
} 
return dirSize; 
} 
/*** 调用实例 ***/ 
user = "heiyeluren"; 
userPath = "./user/".user; 
//如果用户执行了删除或者上传文件的操作就重新获取目录大小 
if (action == "upload" || action == "delete") { 
saveDirSize(userPath); 
} 
userDirSize = getDirSize(userPath)/1024; 
echo "用户: ".user; 
echo "占用空间: ".userDirSize; 
?>
PHP 相关文章推荐
php,不用COM,生成excel文件
Oct 09 PHP
php 远程关机操作的代码
Dec 05 PHP
用PHP读取flv文件的播放时间长度
Sep 03 PHP
服务器web工具 php环境下
Dec 29 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
Jan 14 PHP
php中print(),print_r(),echo()的区别详解
Dec 01 PHP
Yii把CGridView文本框换成下拉框的方法
Dec 03 PHP
PHP date函数常用时间处理方法
May 11 PHP
php跨服务器访问方法小结
May 12 PHP
PHP创建单例后台进程的方法示例
May 23 PHP
PHP验证类的封装与使用方法详解
Jan 10 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 PHP
php递归列出所有文件和目录的代码
Sep 10 #PHP
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
Sep 10 #PHP
php面向对象的方法重载两种版本比较
Sep 08 #PHP
php+AJAX传送中文会导致乱码的问题的解决方法
Sep 08 #PHP
php chr() ord()中文截取乱码问题解决方法
Sep 08 #PHP
wiki-shan写的php在线加密的解密程序
Sep 07 #PHP
php单件模式结合命令链模式使用说明
Sep 07 #PHP
You might like
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
用 JSON 处理缓存
2007/04/27 Javascript
Javascript 同时提交多个Web表单的方法
2009/02/19 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
jquery()函数的三种语法介绍
2013/10/09 Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
2013/10/21 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
JS计算网页停留时间代码
2014/04/28 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
javascript实现根据时间段显示问候语的方法
2015/06/18 Javascript
JavaScript数组的定义及数字操作技巧
2016/06/06 Javascript
js中less常用的方法小结
2017/08/09 Javascript
JavaScript动态绑定详解
2017/09/14 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
js实现电灯开关效果
2021/01/19 Javascript
Python可跨平台实现获取按键的方法
2015/03/05 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
python实现AES加密和解密
2019/03/27 Python
基于python的Paxos算法实现
2019/07/03 Python
详解Django定时任务模块设计与实践
2019/07/24 Python
在Django下测试与调试REST API的方法详解
2019/08/29 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
Python字节单位转换实例
2019/12/05 Python
python实现自动清理重复文件
2020/08/24 Python
Python 内存管理机制全面分析
2021/01/16 Python
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
解除施工合同协议书
2014/10/17 职场文书
部门2015年度工作总结
2015/04/29 职场文书
小学教师教育随笔
2015/08/14 职场文书
Java异常体系非正常停止和分类
2022/06/14 Java/Android