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不用扩展.
Feb 11 PHP
PHP操作XML作为数据库的类
Dec 19 PHP
简单的PHP缓存设计实现代码
Sep 30 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
Jun 27 PHP
php图片水印添加、压缩、剪切的封装类实现
Apr 18 PHP
基于PHP后台的Android新闻浏览客户端
May 23 PHP
Yii2中使用asset压缩js,css文件的方法
Nov 24 PHP
php实现批量上传数据到数据库(.csv格式)的案例
Jun 18 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
Feb 06 PHP
PHP 实现手机端APP支付宝支付功能
Jun 07 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
Jun 03 PHP
php实现商城购物车的思路和源码分析
Jul 23 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
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
简单三步,搞掂内存泄漏
2007/03/10 Javascript
用javascript实现点击链接弹出&quot;图片另存为&quot;而不是直接打开
2007/08/15 Javascript
JavaScript 学习笔记(十五)
2010/01/28 Javascript
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
JavaScript数据结构与算法之链表
2016/01/29 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
2017/02/18 Javascript
React如何将组件渲染到指定DOM节点详解
2017/09/08 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
微信小程序将字符串生成二维码图片的操作方法
2018/07/17 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
vue将文件/图片批量打包下载zip的教程
2020/10/21 Javascript
[02:35]DOTA2英雄基础教程 狙击手
2014/01/14 DOTA
Python实现大文件排序的方法
2015/07/10 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
2016/01/20 Python
浅谈python类属性的访问、设置和删除方法
2016/07/25 Python
使用django-crontab实现定时任务的示例
2018/02/26 Python
python3连接MySQL数据库实例详解
2018/05/24 Python
详解python中sort排序使用
2019/03/23 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
Python input函数使用实例解析
2019/11/22 Python
北承题目(C++)
2012/05/16 面试题
营业员个人总结的自我评价
2013/10/25 职场文书
刘胡兰的英雄事迹材料
2014/02/11 职场文书
2014年乡镇民政工作总结
2014/12/02 职场文书
大学生读书笔记大全
2015/07/01 职场文书
干货:企业内部人才推荐奖励方案!
2019/07/09 职场文书
Android移动应用开发指南之六种布局详解
2022/09/23 Java/Android