《PHP實戰(zhàn):PHP統(tǒng)計目錄大小的自定義函數(shù)分享》要點:
本文介紹了PHP實戰(zhàn):PHP統(tǒng)計目錄大小的自定義函數(shù)分享,希望對您有用。如果有疑問,可以聯(lián)系我們。
計算文件、磁盤分區(qū)和目錄的大小在各種應用程序中都是常見的任務.計算文件的大小可以通過前面介紹過的filesize()函數(shù)完成,統(tǒng)計磁盤大小也可以使用disk_free_space()和disk_total_space()兩個函數(shù)實現(xiàn).但PHP目前并沒有提供目錄總大小的標準函數(shù),因此我們要自定義一個函數(shù)來完成這個任務.首先要考慮計算的目錄中有沒有包含其他子目錄的情況,如果沒有子目錄,目錄下所有文件的大小相加后的總和就是這個目錄的大小.如果包含子目錄,就按照這個方法再計算一下子目錄的大小,使用遞歸函數(shù)看來最適合此項任務.計算目錄大小的自定義函數(shù)如下所示:PHP實戰(zhàn)
代碼如下:
<?php
//自定義一個函數(shù)dirSize(),統(tǒng)計傳入?yún)?shù)的目錄大小
function dirSize($directory){
??$dir_size = 0; //用來累加各個文件大小
?
??if($dir_handle = @opendir($directory)){????? //打開目錄,并判斷是否能成功打開
????while($filename = readdir($dir_handle)){???? //循環(huán)遍歷目錄下的所有文件
????????if($filename != "."&& $filename != ".."){???? //一定要排除兩個特殊的目錄
????????????$subFile = $directory."/".$filename;???? //將目錄下的子文件和當前目錄相連
????????????if(is_dir($subFile))???? //如果為目錄
????????????$dir_size += dirSize($subFile);???? //遞歸地調用自身函數(shù),求子目錄的大小
????????????if(is_file($subFile))???? //如果是文件
????????????$dir_size += filesize($subFile);???? //求出文件的大小并累加
????????}
????}
????closedir($dir_handle);????? //關閉文件資源
????return $dir_size;???? //返回計算后的目錄大小
??}
}
?
$dir_size = dirSize("phpMyAdmin");??? //調用該函數(shù)計算目錄大小
echo round($dir_size/pow(1024,1),2)."KB";??? //字節(jié)數(shù)轉換為“KB”單位并輸出
?>
也可以使用exec()或system()函數(shù)調用操作系統(tǒng)命令“du”來返回目錄的大小.但出于平安原因,這些函數(shù)通常是禁用的,而且不利于跨平臺操作.PHP實戰(zhàn)
《PHP實戰(zhàn):PHP統(tǒng)計目錄大小的自定義函數(shù)分享》是否對您有啟發(fā),歡迎查看更多與《PHP實戰(zhàn):PHP統(tǒng)計目錄大小的自定義函數(shù)分享》相關教程,學精學透。維易PHP學院為您提供精彩教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/14016.html