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 七大优势分析
Jun 23 PHP
PHP分页函数代码(简单实用型)
Dec 02 PHP
PHP 代码规范小结
Mar 08 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
May 07 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
Dec 03 PHP
学习php设计模式 php实现工厂模式(factory)
Dec 07 PHP
Yii2使用自带的UploadedFile实现的文件上传
Jun 20 PHP
一个非常实用的php文件上传类
Jul 04 PHP
php双层循环(九九乘法表)
Oct 23 PHP
Linux下 php7安装redis的方法
Nov 01 PHP
php实现简单的守护进程创建、开启与关闭操作
Aug 13 PHP
PHP中类与对象功能、用法实例解读
Mar 27 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网站提速三大“软”招
2006/10/09 PHP
基于empty函数的输出详解
2013/06/17 PHP
JQuery选择器特辑 详细小结
2012/05/14 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
jquery Validation表单验证使用详解
2020/09/12 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
微信小程序 devtool隐藏的秘密
2017/01/21 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
使用JavaScript中的lodash编写双色球效果
2018/06/24 Javascript
express+vue+mongodb+session 实现注册登录功能
2018/12/06 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
Python模拟百度登录实例详解
2016/01/20 Python
python3 pillow生成简单验证码图片的示例
2017/09/19 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
关于Python作用域自学总结
2019/06/10 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
Python 创建守护进程的示例
2020/09/29 Python
化石印度尼西亚在线商店:Fossil Indonesia
2019/03/11 全球购物
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
几道PHP的面试题
2012/05/19 面试题
测试驱动开发的主要步骤是什么
2014/12/10 面试题
水污染治理专业毕业生推荐信
2013/11/14 职场文书
高中生活自我鉴定
2014/01/18 职场文书
《盲人摸象》教学反思
2014/02/16 职场文书
2014年文学毕业生自我鉴定
2014/04/23 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
蔬果开业典礼发言稿应该怎么写?
2019/09/03 职场文书
详解Nginx 被动检查服务器的存活状态
2021/10/16 Servers
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android
Vue OpenLayer 为地图绘制风场效果
2022/04/24 Vue.js