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 删除记录实现代码
Mar 12 PHP
php数据库抽象层 PDO
May 07 PHP
php学习笔记 php中面向对象三大特性之一[封装性]的应用
Jun 13 PHP
php笔记之:php函数range() round()和list()的使用说明
Apr 26 PHP
浅析php学习的路线图
Jul 10 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
一款简单实用的php操作mysql数据库类
Dec 08 PHP
ThinkPHP中limit()使用方法详解
Apr 19 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
Nov 12 PHP
Django 中 cookie的使用
Aug 17 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 PHP
php输出控制函数和输出函数生成静态页面
Jun 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
apache+codeigniter 通过.htcaccess做动态二级域名解析
2012/07/01 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
Laravel find in set排序实例
2019/10/09 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
jquery 元素相对定位代码
2010/10/15 Javascript
JS操作图片(增,删,改) 例子
2013/04/17 Javascript
JS正则表达式获取分组内容的方法详解
2013/11/15 Javascript
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
2016/09/06 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
简单实现js上传文件功能
2017/08/21 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
Vue props用法详解(小结)
2018/07/03 Javascript
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
Python实现的简单模板引擎功能示例
2017/09/02 Python
详解如何使用Python编写vim插件
2017/11/28 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
2019/06/05 Python
关于Python内存分配时的小秘密分享
2019/09/05 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
HTML5 Canvas自定义圆角矩形与虚线示例代码
2013/08/02 HTML / CSS
美国演唱会订票网站:Ticketmaster美国
2017/10/05 全球购物
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
2014厂务公开实施方案
2014/02/17 职场文书
联片教研活动总结
2014/07/01 职场文书
关于感恩的演讲稿500字
2014/08/26 职场文书
简易离婚协议书范本2014
2014/10/15 职场文书
投标邀请书范本
2015/02/02 职场文书