程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP統計目錄大小的自定義函數分享

PHP統計目錄大小的自定義函數分享

編輯:PHP綜合

計算文件、磁盤分區和目錄的大小在各種應用程序中都是常見的任務。計算文件的大小可以通過前面介紹過的filesize()函數完成,統計磁盤大小也可以使用disk_free_space()和disk_total_space()兩個函數實現。但PHP目前並沒有提供目錄總大小的標准函數,因此我們要自定義一個函數來完成這個任務。首先要考慮計算的目錄中有沒有包含其他子目錄的情況,如果沒有子目錄,目錄下所有文件的大小相加後的總和就是這個目錄的大小。如果包含子目錄,就按照這個方法再計算一下子目錄的大小,使用遞歸函數看來最適合此項任務。計算目錄大小的自定義函數如下所示:

復制代碼 代碼如下:
<?php
//自定義一個函數dirSize(),統計傳入參數的目錄大小
function dirSize($directory){
  $dir_size = 0; //用來累加各個文件大小
 
  if($dir_handle = @opendir($directory)){      //打開目錄,並判斷是否能成功打開
    while($filename = readdir($dir_handle)){     //循環遍歷目錄下的所有文件
        if($filename != "."&& $filename != ".."){     //一定要排除兩個特殊的目錄
            $subFile = $directory."/".$filename;     //將目錄下的子文件和當前目錄相連
            if(is_dir($subFile))     //如果為目錄
            $dir_size += dirSize($subFile);     //遞歸地調用自身函數,求子目錄的大小
            if(is_file($subFile))     //如果是文件
            $dir_size += filesize($subFile);     //求出文件的大小並累加
        }
    }
    closedir($dir_handle);      //關閉文件資源
    return $dir_size;     //返回計算後的目錄大小
  }
}
 
$dir_size = dirSize("phpMyAdmin");    //調用該函數計算目錄大小
echo round($dir_size/pow(1024,1),2)."KB";    //字節數轉換為“KB”單位並輸出
?>

也可以使用exec()或system()函數調用操作系統命令“du”來返回目錄的大小。但出於安全原因,這些函數通常是禁用的,而且不利於跨平台操作。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved