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 版本]
Mar 20 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
Jun 03 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
Dec 02 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
Jan 16 PHP
用php制作简单分页(从数据库读取记录)的方法详解
May 04 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
Jun 24 PHP
php中strtotime函数用法详解
Nov 15 PHP
PHP封装的XML简单操作类完整实例
Nov 13 PHP
详解关于php的xdebug配置(编辑器vscode)
Jan 29 PHP
PHP explode()函数用法讲解
Feb 15 PHP
Yii框架布局文件的动态切换操作示例
Nov 11 PHP
laravel框架分组控制器和分组路由实现方法示例
Jan 25 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
一个简单实现多条件查询的例子
2006/10/09 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
使用php转义输出HTML到JavaScript
2015/03/27 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
PHP数组对象与Json转换操作实例分析
2019/10/22 PHP
javascript iframe编程相关代码
2009/12/28 Javascript
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
基于JQuery的简单实现折叠菜单代码
2010/09/15 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
JS中attr和prop属性的区别以及优先选择示例介绍
2014/06/30 Javascript
JQuery中使用on方法绑定hover事件实例
2014/12/09 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
2017/01/05 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
Express之托管静态文件的方法
2018/06/01 Javascript
React 组件中的 bind(this)示例代码
2018/09/16 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
Python天气预报采集器实现代码(网页爬虫)
2012/10/07 Python
详解Python迭代和迭代器
2016/03/28 Python
Python实现对象转换为xml的方法示例
2017/06/08 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
python根据文本生成词云图代码实例
2019/11/15 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
教师学习培训邀请函
2014/02/04 职场文书
甜品蛋糕店创业计划书范文
2014/02/06 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
婚礼新人答谢词
2015/01/04 职场文书
考研英语辞职信
2015/05/13 职场文书
2015年房产销售工作总结范文
2015/05/22 职场文书
基于Python实现流星雨效果的绘制
2022/03/18 Python