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 和 XML: 使用expat函数(二)
Oct 09 PHP
php下过滤HTML代码的函数
Dec 10 PHP
php 保留小数点
Apr 21 PHP
通用PHP动态生成静态HTML网页的代码
Mar 04 PHP
PHP中break及continue两个流程控制指令区别分析
Apr 18 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
Apr 05 PHP
php+js iframe实现上传头像界面无跳转
Apr 29 PHP
PHP使用Pthread实现的多线程操作实例
Nov 14 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
Apr 09 PHP
PHP使用SMTP邮件服务器发送邮件示例
Aug 28 PHP
PHP获取当前系统时间的方法小结
Oct 03 PHP
laravel实现查询最后执行的一条sql语句的方法
Oct 09 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
香妃
2021/03/03 冲泡冲煮
php ios推送(代码)
2013/07/01 PHP
PHP中key和current,next的联合运用实例分析
2016/03/29 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
php使用自定义函数实现汉字分割替换功能示例
2017/01/30 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
后台获取ZTREE选中节点的方法
2015/02/12 Javascript
js实现无缝滚动特效
2015/12/20 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
jQuery实现图片向左向右切换效果的简单实例
2016/05/18 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
js学习总结_选项卡封装(实例讲解)
2017/07/13 Javascript
jquery ajax异步提交表单数据的方法
2017/10/27 jQuery
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
2018/09/13 Javascript
element-ui upload组件多文件上传的示例代码
2018/10/17 Javascript
详解vue-cli@2.x项目迁移日志
2019/06/06 Javascript
寻找网站后台地址的python脚本
2014/09/01 Python
python调用fortran模块
2016/04/08 Python
python脚本实现xls(xlsx)转成csv
2016/04/10 Python
python检查URL是否正常访问的小技巧
2017/02/25 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
Django实现后台上传并显示图片功能
2020/05/29 Python
PyQt5实现登录页面
2020/05/30 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
css3实现画半圆弧线的示例代码
2017/11/06 HTML / CSS
启动一个线程是用run()还是start()
2016/12/25 面试题
生日宴会答谢词
2014/01/09 职场文书
运动会通讯稿200字
2014/02/16 职场文书
社区党务公开实施方案
2014/03/18 职场文书
绿色环保标语
2014/06/12 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
团结友爱主题班会
2015/08/13 职场文书