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 相关文章推荐
超级简单的发送邮件程序
Oct 09 PHP
?生?D片??C字串
Dec 06 PHP
简单采集了yahoo的一些数据
Feb 14 PHP
php仿QQ验证码的实例分析
Jul 01 PHP
PHP中的类型约束介绍
May 11 PHP
学习php设计模式 php实现建造者模式
Dec 07 PHP
Linux系统中为php添加pcntl扩展
Aug 28 PHP
深入理解PHP类的自动载入机制
Sep 16 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
Oct 20 PHP
提高Laravel应用性能方法详解
Jun 24 PHP
laravel-admin自动生成模块,及相关基础配置方法
Oct 08 PHP
laravel入门知识点整理
Sep 15 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旋转图片90度的方法
2013/11/07 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
php实现图片按比例截取的方法
2017/02/06 PHP
PHP编程计算日期间隔天数的方法
2017/04/26 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
菜单效果
2006/10/14 Javascript
JS中处理与当前时间间隔的函数代码
2012/05/23 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
2016/09/09 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
微信小程序中时间戳和日期的相互转换问题
2018/07/09 Javascript
小程序清理本地缓存的方法
2018/08/17 Javascript
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
python检查序列seq是否含有aset中项的方法
2015/06/30 Python
Python存取XML的常见方法实例分析
2017/03/21 Python
pandas.loc 选取指定列进行操作的实例
2018/05/18 Python
python调用tcpdump抓包过滤的方法
2018/07/18 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
Flask框架搭建虚拟环境的步骤分析
2019/12/21 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
python程序需要编译吗
2020/06/19 Python
简述python Scrapy框架
2020/08/17 Python
Kmeans均值聚类算法原理以及Python如何实现
2020/09/26 Python
HTML5标签使用方法详解
2015/11/27 HTML / CSS
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
数据库什么时候应该被重组
2012/11/02 面试题
学前教育毕业生自荐信范文
2013/12/24 职场文书
给儿子的表扬信
2014/01/15 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
银行给客户的感谢信
2015/01/23 职场文书
2015年财务工作总结范文
2015/03/31 职场文书
销售督导岗位职责
2015/04/10 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书