加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php达成统计目录文件大小的函数

发布时间:2023-03-30 12:56:18 所属栏目:PHP教程 来源:
导读:本文给大家介绍了使用php实现统计目录文件大小的函数,其主要的思路是通过递归遍历目录中的所有文件从而计算出文件总大小的,有需要的小伙伴可以参考下。早上刚到公司,头告诉我,抓紧写一个小函数,用来统计指定目录

本文给大家介绍了使用php实现统计目录文件大小的函数,其主要的思路是通过递归遍历目录中的所有文件从而计算出文件总大小的,有需要的小伙伴可以参考下。

早上刚到公司,头告诉我,抓紧写一个小函数,用来统计指定目录中文件大小,我了个去,动手吧,还好有点小基础,一会就完工了,哈哈。代码在下面咯。

<?  

/**  

 统计目录文件大小的函数  

 @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; 

 } 

?>

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!