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 相关文章推荐
VML绘图板②脚本--VMLgraph.js、XMLtool.js
Oct 09 PHP
PHP+DBM的同学录程序(4)
Oct 09 PHP
PHP4实际应用经验篇(1)
Oct 09 PHP
php在服务器执行exec命令失败的解决方法
Mar 03 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 PHP
PHP字符串的编码问题的详细介绍
Apr 27 PHP
Yii2实现ajax上传图片插件用法
Apr 28 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
PHP XML Expat解析器知识点总结
Feb 15 PHP
Yii框架核心组件类实例详解
Aug 06 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
Jul 24 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
Feb 26 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
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
php取整函数ceil,floo,round的用法及介绍
2013/08/31 PHP
PHP修改session_id示例代码
2014/01/08 PHP
php打包网站并在线压缩为zip
2016/02/13 PHP
轻松实现php文件上传功能
2017/02/17 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
jquery获取焦点和失去焦点事件代码
2013/04/21 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
jQuery自动添加表单项的方法
2015/07/13 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
JS三级可折叠菜单实现方法
2016/02/29 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
全面解析Javascript无限添加QQ好友原理
2016/06/15 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
基于Python实现的百度贴吧网络爬虫实例
2015/04/17 Python
Python实现的多进程和多线程功能示例
2018/05/29 Python
python可视化实现代码
2019/01/15 Python
PowerBI和Python关于数据分析的对比
2019/07/11 Python
Python处理session的方法整理
2019/08/29 Python
基于python纯函数实现井字棋游戏
2020/05/27 Python
Python OpenCV实现测量图片物体宽度
2020/05/27 Python
Python如何优雅删除字符列表空字符及None元素
2020/06/25 Python
俄罗斯电动工具和设备购物网站:Vseinstrumenti.ru
2020/11/12 全球购物
大学生党员自我批评
2014/02/14 职场文书
项目合作意向书范本
2014/04/01 职场文书
请假条范文大全
2014/04/10 职场文书
2014年综治宣传月活动总结
2014/04/28 职场文书
趣味运动会策划方案
2014/06/02 职场文书
离婚协议书范本样本
2014/08/19 职场文书
入党转正介绍人意见
2015/06/03 职场文书
环保建议书作文500字
2015/09/14 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
详细总结Python常见的安全问题
2021/05/21 Python
Typescript类型系统FLOW静态检查基本规范
2022/05/25 Javascript