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 相关文章推荐
第十二节--类的自动加载
Nov 16 PHP
PHP的开发框架的现状和展望
Mar 16 PHP
用PHP生成静态HTML速度快类库
Mar 18 PHP
php addslashes 函数详细分析说明
Jun 23 PHP
ThinkPHP使用smarty模板引擎的方法
Jul 01 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
Jul 24 PHP
php获取当月最后一天函数分享
Feb 02 PHP
PHP代码实现表单数据验证类
Jul 28 PHP
PHP中filter函数校验数据的方法详解
Jul 31 PHP
Yii2中添加全局函数的方法分析
May 04 PHP
PHP 实现手机端APP支付宝支付功能
Jun 07 PHP
php中文语义分析实现方法示例
Sep 28 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 清除网页病毒的方法
2008/12/05 PHP
PHP header()函数使用详细(301、404等错误设置)
2013/04/17 PHP
使用PHP实现下载CSS文件中的图片
2015/12/06 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
Javascript动画的实现原理浅析
2015/03/02 Javascript
JavaScript中的some()方法使用详解
2015/06/09 Javascript
微信小程序 底部导航栏目开发资料
2016/12/05 Javascript
jQuery中页面返回顶部的方法总结
2016/12/30 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
4 种滚动吸顶实现方式的比较
2019/04/09 Javascript
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
Vue基础配置讲解
2019/11/29 Javascript
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
2018/02/13 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
python实现批量处理将图片粘贴到另一张图片上并保存
2019/12/12 Python
Python基于百度AI实现OCR文字识别
2020/04/02 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
解决pip install psycopg2出错问题
2020/07/09 Python
如何用border-image实现文字气泡边框的示例代码
2020/01/21 HTML / CSS
纯CSS3实现鼠标滑过按钮动画第二节
2020/07/16 HTML / CSS
英国快时尚女装购物网站:PrettyLittleThing
2018/08/15 全球购物
全球最大的房车租赁市场:Outdoorsy
2018/09/19 全球购物
ORACLE十问
2015/04/20 面试题
办公室员工岗位工作职责
2014/03/10 职场文书
给老婆的保证书范文
2014/04/28 职场文书
民族学专业职业生涯规划范文:积跬步以至千里
2014/09/11 职场文书
怎样写辞职信
2015/02/27 职场文书
自荐信模板大全
2015/03/27 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书
争做文明公民倡议书
2019/06/24 职场文书
新手入门Mysql--sql执行过程
2021/06/20 MySQL
python基础之文件操作
2021/10/24 Python