當前位置:才華齋>計算機>php語言>

PHP如何自定義一個函式

php語言 閱讀(3.03W)

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

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”來返回目錄的大小。但出於安全原因,這些函式通常是禁用的,而且不利於跨平臺操作。</p