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 相关文章推荐
提问的智慧
Oct 09 PHP
mysql_num_rows VS COUNT 效率问题分析
Apr 23 PHP
PHP在线生成二维码(google api)的实现代码详解
Jun 04 PHP
smarty基础之拼接字符串的详解
Jun 18 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
May 19 PHP
php中常见的sql攻击正则表达式汇总
Nov 06 PHP
Yii2框架使用计划任务的方法
May 25 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
Oct 08 PHP
php rmdir使用递归函数删除非空目录实例详解
Oct 20 PHP
php动态读取数据清除最右边距的方法
Apr 12 PHP
PHP常用函数之获取汉字首字母功能示例
Oct 21 PHP
基于PHP实现短信验证码发送次数限制
Jul 11 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
加速XP搜索功能堪比vista
2007/03/22 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
2015/07/29 PHP
学习php设计模式 php实现模板方法模式
2015/12/08 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
jQuery为iframe的body添加click事件的实现代码
2011/04/07 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
多选列表框动态添加,移动,删除,全选等操作的简单实例
2014/01/13 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
Jquery幻灯片特效代码分享--打开页面随机选择切换方式(3)
2015/08/15 Javascript
微信小程序 教程之注册程序
2016/10/17 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
JS实现监控微信小程序的原理
2018/06/15 Javascript
vue多次循环操作示例
2019/02/08 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
[22:59]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python探索之修改Python搜索路径
2017/10/25 Python
python移位运算的实现
2019/07/15 Python
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
高中生期末评语大全
2014/01/28 职场文书
运动会入场词200字
2014/02/15 职场文书
个人工作表现评语
2014/04/30 职场文书
地质灾害防治方案
2014/05/14 职场文书
服务标语大全
2014/06/18 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
离婚财产处理协议书
2014/09/30 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
工作检讨书怎么写
2015/01/23 职场文书
2016年学校党支部创先争优活动总结
2016/04/05 职场文书
Python序列化与反序列化相关知识总结
2021/06/08 Python