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实现mysql同步的实现方法
Oct 21 PHP
PHP 字符串正则替换函数preg_replace使用说明
Jul 15 PHP
PHP5中Cookie与 Session使用详解
Apr 30 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
Jul 03 PHP
php MessagePack介绍
Oct 06 PHP
php配置php-fpm启动参数及配置详解
Nov 04 PHP
PHP中模拟链表和链表的基本操作示例
Feb 27 PHP
PHP使用自定义方法实现数组合并示例
Jul 07 PHP
Yii2实现ActiveForm ajax提交
May 26 PHP
PHP正则删除HTML代码中宽高样式的方法
Jun 12 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
Jul 18 PHP
php创建多级目录与级联删除文件的方法示例
Sep 12 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小偷的核心程序
2007/04/09 PHP
php学习笔记之 函数声明(二)
2011/06/09 PHP
PHP实现一维数组与二维数组去重功能示例
2018/05/24 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
高效率JavaScript编写技巧整理
2013/08/23 Javascript
innerText 使用示例
2014/01/23 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
jQuery插件实现文件上传功能(支持拖拽)
2020/08/27 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
详解angularjs中如何实现控制器和指令之间交互
2017/05/31 Javascript
jquery根据name取得select选中的值实例(超简单)
2018/01/25 jQuery
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
微信小程序之onLaunch与onload异步问题详解
2019/03/28 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
浅析Git版本控制器使用
2017/12/10 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
python实现Virginia无密钥解密
2019/03/20 Python
如何使用Python实现斐波那契数列
2019/07/02 Python
wxPython色环电阻计算器
2019/11/18 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
2020/08/22 Python
解决python便携版无法直接运行py文件的问题
2020/09/01 Python
美国体育用品商店:Academy Sports + Outdoors
2020/01/04 全球购物
销售自我评价
2013/10/22 职场文书
优秀大学生自荐信
2014/06/09 职场文书
大学生就业协议书范本(适用于公司企业)
2014/10/07 职场文书
违反交通安全法检讨书
2014/10/24 职场文书
给客户的检讨书
2014/12/21 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
2015秋季开学典礼主持词
2015/07/16 职场文书
python中使用 unittest.TestCase单元测试的用例详解
2021/08/30 Python
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript