php實現(xiàn)統(tǒng)計目錄文件大小的函數(shù)
更新時間:2015年12月25日 08:59:07 投稿:hebedich
本文給大家介紹了使用php實現(xiàn)統(tǒng)計目錄文件大小的函數(shù),其主要的思路是通過遞歸遍歷目錄中的所有文件從而計算出文件總大小的,有需要的小伙伴可以參考下
早上剛到公司,頭告訴我,抓緊寫一個小函數(shù),用來統(tǒng)計指定目錄中文件大小,我了個去,動手吧,還好有點小基礎(chǔ),一會就完工了,哈哈。代碼在下面咯。
<?
/**
統(tǒng)計目錄文件大小的函數(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";
?>
這個函數(shù)可以遞歸遍歷目錄中的所有文件,并計算以MB為單位的文件總大小。
下面我們再來看個代碼
<?php
#循環(huán)遍歷目錄中所有的文件,并統(tǒng)計目錄和文件的大小
$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);
#把文件或目錄的大小轉(zhuǎn)化為容易讀的方式
function toSize($size){
$dw; #指定文件或目錄統(tǒng)計的單位方式
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)計目錄的大小
function dirSize($dirName){
$dirsize=0;
$dir=opendir($dirName);
while($fileName=readdir($dir)){
$file=$dirName."/".$fileName;
if($fileName!="." && $fileName!=".."){ //一定要進(jìn)行判斷,否則會出現(xiàn)錯誤的
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ū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04
PHP判斷遠(yuǎn)程url是否有效的幾種方法小結(jié)
需要判斷遠(yuǎn)程URL是否有效,遠(yuǎn)程url包括遠(yuǎn)程圖片,網(wǎng)頁,視頻等等元素,收集了多種方法,大家可以根據(jù)需要選擇。2011-10-10
php擴展Zend?Framework框架——Validate擴展
這篇文章介紹了php擴展Zend?Framework框架,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2008-01-01

