PHP統(tǒng)計目錄大小的自定義函數(shù)分享
計算文件、磁盤分區(qū)和目錄的大小在各種應(yīng)用程序中都是常見的任務(wù)。計算文件的大小可以通過前面介紹過的filesize()函數(shù)完成,統(tǒng)計磁盤大小也可以使用disk_free_space()和disk_total_space()兩個函數(shù)實(shí)現(xiàn)。但PHP目前并沒有提供目錄總大小的標(biāo)準(zhǔn)函數(shù),因此我們要自定義一個函數(shù)來完成這個任務(wù)。首先要考慮計算的目錄中有沒有包含其他子目錄的情況,如果沒有子目錄,目錄下所有文件的大小相加后的總和就是這個目錄的大小。如果包含子目錄,就按照這個方法再計算一下子目錄的大小,使用遞歸函數(shù)看來最適合此項任務(wù)。計算目錄大小的自定義函數(shù)如下所示:
<?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; //將目錄下的子文件和當(dāng)前目錄相連
if(is_dir($subFile)) //如果為目錄
$dir_size += dirSize($subFile); //遞歸地調(diào)用自身函數(shù),求子目錄的大小
if(is_file($subFile)) //如果是文件
$dir_size += filesize($subFile); //求出文件的大小并累加
}
}
closedir($dir_handle); //關(guān)閉文件資源
return $dir_size; //返回計算后的目錄大小
}
}
$dir_size = dirSize("phpMyAdmin"); //調(diào)用該函數(shù)計算目錄大小
echo round($dir_size/pow(1024,1),2)."KB"; //字節(jié)數(shù)轉(zhuǎn)換為“KB”單位并輸出
?>
也可以使用exec()或system()函數(shù)調(diào)用操作系統(tǒng)命令“du”來返回目錄的大小。但出于安全原因,這些函數(shù)通常是禁用的,而且不利于跨平臺操作。
- PHP中文處理 中文字符串截取(mb_substr)和獲取中文字符串字?jǐn)?shù)
- php中3種方法統(tǒng)計字符串中每種字符的個數(shù)并排序
- php實(shí)現(xiàn)統(tǒng)計網(wǎng)站在線人數(shù)的方法
- php使用Session和文件統(tǒng)計在線人數(shù)
- php統(tǒng)計數(shù)組元素個數(shù)的方法
- PHP實(shí)現(xiàn)的統(tǒng)計數(shù)據(jù)功能詳解
- 使用php統(tǒng)計字符串中中英文字符的個數(shù)
- php超快高效率統(tǒng)計大文件行數(shù)
- php簡單統(tǒng)計字符串單詞數(shù)量的方法
- php簡單統(tǒng)計中文個數(shù)的方法
- php實(shí)現(xiàn)的統(tǒng)計字?jǐn)?shù)函數(shù)定義與使用示例
相關(guān)文章
Thinkphp和onethink實(shí)現(xiàn)微信支付插件
這篇文章主要為大家詳細(xì)介紹了Thinkphp和onethink實(shí)現(xiàn)微信支付插件,感興趣的小伙伴們可以參考一下2016-04-04php class中public,private,protected的區(qū)別以及實(shí)例分析
本篇文章是對php class中public,private,protected的區(qū)別以及實(shí)例進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06php 處理上百萬條的數(shù)據(jù)庫如何提高處理查詢速度
php 處理上百萬條的數(shù)據(jù)庫如何提高處理查詢速度2010-02-02在PHP程序中運(yùn)行Python腳本(接收數(shù)據(jù)及傳參)的方法詳解
這篇文章主要為大家詳細(xì)介紹一下,如何在php程序中運(yùn)行Python腳本以及如何使用python返回josn數(shù)據(jù)供php使用,感興趣的小伙伴可以了解一下2022-09-09php中g(shù)etservbyport與getservbyname函數(shù)用法實(shí)例
這篇文章主要介紹了php中g(shù)etservbyport與getservbyname函數(shù)用法,以實(shí)例形式分析了getservbyport與getservbyname函數(shù)獲取server端的端口等信息的方法,需要的朋友可以參考下2014-11-11PHP開發(fā)之歸檔格式phar文件概念與用法詳解【創(chuàng)建,使用,解包還原提取】
這篇文章主要介紹了PHP開發(fā)之歸檔格式phar文件概念與用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了歸檔格式phar文件創(chuàng)建,使用,解包還原提取等概念及操作實(shí)現(xiàn)方法,需要的朋友可以參考下2017-11-11PHP基于imagick擴(kuò)展實(shí)現(xiàn)合成圖片的兩種方法【附imagick擴(kuò)展下載】
這篇文章主要介紹了PHP基于imagick擴(kuò)展實(shí)現(xiàn)合成圖片的兩種方法,結(jié)合實(shí)例形式分析了php使用imagick擴(kuò)展進(jìn)行圖片合并的具體操作方法與相關(guān)實(shí)現(xiàn)技巧,并附帶imagick擴(kuò)展下載地址與配置方法,需要的朋友可以參考下2017-11-11