php实现统计目录文件大小的函数


Posted in PHP onDecember 25, 2015

早上刚到公司,头告诉我,抓紧写一个小函数,用来统计指定目录中文件大小,我了个去,动手吧,还好有点小基础,一会就完工了,哈哈。代码在下面咯。

<? 
/** 
 统计目录文件大小的函数 
 @author xfcode 
*/ 
 function dirsize($dir) 
 { 
 @$dh = opendir($dir); 
 $size = 0; 
 while ($file = @readdir($dh)) 
{ 
  if ($file != "." and $file != "..") 
 { 
 $path = $dir."/".$file; 
  if (is_dir($path)) 
 { 
 $size += dirsize($path); 
  } 
 elseif (is_file($path)) 
 { 
 $size += filesize($path); 
  } 
  } 
 } 
  @closedir($dh); 
  return $size; 
 } 
//function end 
 
//eg: 
 $dir_path = "./my_files"; 
 $dir_size = dirsize($dir_path); 
 $dir_size = $dir_size/1024/1024; 
 echo $dir_size."MB"; 
 ?>

这个函数可以递归遍历目录中的所有文件,并计算以MB为单位的文件总大小。

下面我们再来看个代码

<?php
 #循环遍历目录中所有的文件,并统计目录和文件的大小
 $dirName="phpMyAdmin";
 $dir=opendir($dirName); #返回一个资源类型
 while($fileName=readdir($dir)){
 $file=$dirName."/".$fileName;
 if($fileName!="." && $fileName!=".."){
  if(is_dir($file)){
  echo "<font color='red'>".$fileName."===".date("Y-m-d H:i:s",filectime($file))."==".filetype($file)."==".toSize(dirSize($file))."</font><br/>";
  }
  else{
  echo "<font color='green'>".$fileName."=====".date("Y-m-d H:i:s",filectime($file))."====".filetype($file)."====".toSize(filesize($file))."</font><br/>";
  }
 }
 }
 closedir($dir);
 
 #把文件或目录的大小转化为容易读的方式
 function toSize($size){
 $dw; #指定文件或目录统计的单位方式
 if($size>pow(2,30)){
  $dw="GB";
  $size=round($size/pow(2,30),2);
 }
 else if($size>pow(2,20)){
  $dw="MB";
  $size=round($size/pow(2,20),2);
 }
 else if($size>pow(2,10)){
  $dw="KB";
  $size=round($size/pow(2,10),2);
 }
 else
 {
  $dw="bytes";
 }
 return $size.$dw;
 }

 #利用递归的方式统计目录的大小
 function dirSize($dirName){
 $dirsize=0;
 $dir=opendir($dirName);
 while($fileName=readdir($dir)){
  $file=$dirName."/".$fileName;
  if($fileName!="." && $fileName!=".."){   //一定要进行判断,否则会出现错误的
  if(is_dir($file)){
   $dirsize+=dirSize($file);
  }
  else{
   $dirsize+=filesize($file);
  }
  }
 }
 closedir($dir);
 return $dirsize;
 }
?>
PHP 相关文章推荐
用PHP制作静态网站的模板框架(一)
Oct 09 PHP
ADODB的数据库封包程序库
Dec 31 PHP
php下把数组保存为文件格式的实例应用
Feb 08 PHP
php allow_url_include的应用和解释
Apr 22 PHP
探讨:如何编写PHP扩展
Jun 13 PHP
PHP加Nginx实现动态裁剪图片方案
Mar 10 PHP
php目录遍历函数opendir用法实例
Nov 20 PHP
php模板引擎技术简单实现
Mar 15 PHP
php禁用cookie后session设置方法分析
Oct 19 PHP
thinkPHP中钩子的两种配置调用方法详解
Nov 11 PHP
PHP后端银联支付及退款实例代码
Jun 23 PHP
PHP给前端返回一个JSON对象的实例讲解
May 31 PHP
通过PHP自带的服务器来查看正则匹配结果的方法
Dec 24 #PHP
在openSUSE42.1下编译安装PHP7 的方法
Dec 24 #PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
Dec 24 #PHP
PHP实现文件上传和多文件上传
Dec 24 #PHP
纯PHP代码实现支付宝批量付款
Dec 24 #PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
Dec 24 #PHP
4种PHP异步执行的常用方式
Dec 24 #PHP
You might like
php 连接mssql数据库 初学php笔记
2010/03/01 PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
2014/08/23 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
Jquery Ajax请求代码(2)
2011/01/07 Javascript
juqery 学习之六 CSS--css、位置、宽高
2011/02/11 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
js兼容pc端浏览器并有多种弹出小提示的手机端浮层控件实例
2015/04/29 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
jQuery右下角悬浮广告实例
2016/10/17 Javascript
完全深入学习Bootstrap表单
2016/11/28 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
Vue从TodoList中学父子组件通信
2019/02/05 Javascript
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
微信小程序仿抖音短视频切换效果的实例代码
2020/06/24 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
vue设置默认首页的操作
2020/08/12 Javascript
Python字符串格式化%s%d%f详解
2018/02/02 Python
对Python中的条件判断、循环以及循环的终止方法详解
2019/02/08 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
Python编程中类与类的关系详解
2019/08/08 Python
python或C++读取指定文件夹下的所有图片
2019/08/31 Python
Python 日期的转换及计算的具体使用详解
2020/01/16 Python
Python反爬虫伪装浏览器进行爬虫
2020/02/28 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
python 生成器需注意的小问题
2020/09/29 Python
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
南京迈特望C/C++面试题
2012/07/09 面试题
医学专业毕业生个人求职信
2013/12/25 职场文书
工商企业管理专业自荐信范文
2014/04/12 职场文书
百日安全生产活动总结
2014/07/05 职场文书
教导主任个人总结
2015/03/03 职场文书
参加招聘会后的感想
2015/08/10 职场文书