php實(shí)現(xiàn)統(tǒng)計(jì)目錄文件大小的函數(shù)
早上剛到公司,頭告訴我,抓緊寫一個(gè)小函數(shù),用來統(tǒng)計(jì)指定目錄中文件大小,我了個(gè)去,動(dòng)手吧,還好有點(diǎn)小基礎(chǔ),一會(huì)就完工了,哈哈。代碼在下面咯。
<? /** 統(tǒng)計(jì)目錄文件大小的函數(shù) @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"; ?>
這個(gè)函數(shù)可以遞歸遍歷目錄中的所有文件,并計(jì)算以MB為單位的文件總大小。
下面我們?cè)賮砜磦€(gè)代碼
<?php #循環(huán)遍歷目錄中所有的文件,并統(tǒng)計(jì)目錄和文件的大小 $dirName="phpMyAdmin"; $dir=opendir($dirName); #返回一個(gè)資源類型 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); #把文件或目錄的大小轉(zhuǎn)化為容易讀的方式 function toSize($size){ $dw; #指定文件或目錄統(tǒng)計(jì)的單位方式 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; } #利用遞歸的方式統(tǒng)計(jì)目錄的大小 function dirSize($dirName){ $dirsize=0; $dir=opendir($dirName); while($fileName=readdir($dir)){ $file=$dirName."/".$fileName; if($fileName!="." && $fileName!=".."){ //一定要進(jìn)行判斷,否則會(huì)出現(xiàn)錯(cuò)誤的 if(is_dir($file)){ $dirsize+=dirSize($file); } else{ $dirsize+=filesize($file); } } } closedir($dir); return $dirsize; } ?>
相關(guān)文章
淺談ThinkPHP中initialize和construct的區(qū)別
下面小編就為大家?guī)硪黄獪\談ThinkPHP中initialize和construct的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04PHP實(shí)現(xiàn)的多進(jìn)程控制demo示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的多進(jìn)程控制demo,涉及php信號(hào)處理與進(jìn)程控制相關(guān)操作技巧,需要的朋友可以參考下2019-07-07PHP判斷遠(yuǎn)程url是否有效的幾種方法小結(jié)
需要判斷遠(yuǎn)程URL是否有效,遠(yuǎn)程url包括遠(yuǎn)程圖片,網(wǎng)頁(yè),視頻等等元素,收集了多種方法,大家可以根據(jù)需要選擇。2011-10-10php實(shí)現(xiàn)求相對(duì)時(shí)間函數(shù)
這篇文章主要介紹了php實(shí)現(xiàn)求相對(duì)時(shí)間函數(shù),可實(shí)現(xiàn)簡(jiǎn)單求相對(duì)時(shí)間為幾分鐘前或幾小時(shí)前的功能,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-06-06php擴(kuò)展Zend?Framework框架——Validate擴(kuò)展
這篇文章介紹了php擴(kuò)展Zend?Framework框架,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2008-01-01