php 文件目录大小统计函数
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-12 14:09:14 浏览: 评论:0
文件夹大小统计主要是计算文件夹里面的文件大小然后相加之后再利用函数进行统计了,统计文件大小函数我们使用php filesize函数了,其它的全用目录相关的处理函数,下面一起来看看.
计算文件夹的大小,包括子文件夹,格式化输出文件夹大小、文件数、子文件夹数信息,代码如下:
- <?php
- //代码也可以用于统计目录数
- //格式化输出目录大小 单位:Bytes,KB,MB,GB
- function getDirectorySize($path)
- {
- $totalsize = 0;
- $totalcount = 0;
- $dircount = 0;
- if ($handle = opendir ($path))
- {
- while (false !== ($file = readdir($handle)))
- {
- $nextpath = $path . '/' . $file;
- if ($file != '.' && $file != '..' && !is_link ($nextpath))
- {
- if (is_dir ($nextpath))
- {
- $dircount++;
- $result = getDirectorySize($nextpath);
- $totalsize += $result['size'];
- $totalcount += $result['count'];
- $dircount += $result['dircount'];
- }
- elseif (is_file ($nextpath))
- {
- $totalsize += filesize ($nextpath);
- $totalcount++;
- }//开源代码phpfensi.com
- }
- }
- }
- closedir ($handle);
- $total['size'] = $totalsize;
- $total['count'] = $totalcount;
- $total['dircount'] = $dircount;
- return $total;
- }
- ?>
PHP中计算文件目录大小其实主要是用到"filesize"函数,通过递归的方法计算每个文件的大小,再计算他们的和即是整个文件目录的大小.
因为直接返回的文件大小是以字节为单位的,所以我们一般还要经过换算得到我们常见得大小,以下是单位换算的函数,代码如下:
- function sizeFormat($size)
- {
- $sizeStr='';
- if($size<1024)
- {
- return $size." bytes";
- }
- else if($size<(1024*1024))
- {
- $size=round($size/1024,1);
- return $size." KB";
- }
- else if($size<(1024*1024*1024))
- {
- $size=round($size/(1024*1024),1);
- return $size." MB";
- }
- else
- {
- $size=round($size/(1024*1024*1024),1);
- return $size." GB";
- }
- }
- $path="/home/www/htdocs";
- $ar=getDirectorySize($path);
- echo "<h4>路径 : $path</h4>";
- echo "目录大小 : ".sizeFormat($ar['size'])."<br>";
- echo "文件数 : ".$ar['count']."<br>";
- echo "目录术 : ".$ar['dircount']."<br>";
- //print_r($ar);
后面附一个单位函数,该函数最主要的是根据文件的字节数,判断应当选择的统计单位,也就是说一个文件用某一单位比如MB,那么该文件肯定小于1GB,否则当然要用GB作为单位了,而且文件要大于KB,不然的话得用更小的单位统计,该函数代码如下:
- //size() 统计文件大小
- function size($byte)
- {
- if($byte < 1024) {
- $unit="B";
- }
- else if($byte < 10240) {
- $byte=round_dp($byte/1024, 2);
- $unit="KB";
- }
- else if($byte < 102400) {
- $byte=round_dp($byte/1024, 2);
- $unit="KB";
- }
- else if($byte < 1048576) {
- $byte=round_dp($byte/1024, 2);
- $unit="KB";
- }
- else if ($byte < 10485760) {
- $byte=round_dp($byte/1048576, 2);
- $unit="MB";
- }
- else if ($byte < 104857600) {
- $byte=round_dp($byte/1048576,2);
- $unit="MB";
- }
- else if ($byte < 1073741824) {
- $byte=round_dp($byte/1048576, 2);
- $unit="MB";
- }
- else {
- $byte=round_dp($byte/1073741824, 2);
- $unit="GB";
- }
- $byte .= $unit;
- return $byte;
- }
- function round_dp($num , $dp)
- {
- $sh = pow(10 , $dp);
- return (round($num*$sh)/$sh);
- }
Tags: php文件大小 php目录大小
相关文章
- ·PHP文件大小格式化函数合集(2020-10-20)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)