在平常編程中有時需要獲取磁盤空間使用情況,大部分情況都是使用disk_free_space和disk_total_space函數。
下面實例就是獲取服務器所有磁盤空間大小,實例如下:
/**
* 字節格式化 把字節數格式為B K M G T P E Z Y 描述的大小
* @param int $size 大小
* @param int $dec 顯示類型
* @return int
*/
function byte_format($size,$dec=2)
{
$a = array("B", "KB", "MB", "GB", "TB", "PB","EB","ZB","YB");
$pos = 0;
while ($size >= 1024)
{
$size /= 1024;
$pos++;
}
return round($size,$dec)." ".$a[$pos];
}
/**
* 取得單個磁盤信息
* @param $letter
* @return array
*/
function get_disk_space($letter)
{
//獲取磁盤信息
$diskct = 0;
$disk = array();
/*if(@disk_total_space($key)!=NULL) *為防止影響服務器,不檢查軟驅
{
$diskct=1;
$disk["A"]=round((@disk_free_space($key)/(1024*1024*1024)),2)."G / ".round((@disk_total_space($key)/(1024*1024*1024)),2).'G';
}*/
$diskz = 0; //磁盤總容量
$diskk = 0; //磁盤剩余容量
$is_disk = $letter.':';
if(@disk_total_space($is_disk)!=NULL)
{
$diskct++;
$disk[$letter][0] = byte_format(@disk_free_space($is_disk));
$disk[$letter][1] = byte_format(@disk_total_space($is_disk));
$disk[$letter][2] = round(((@disk_free_space($is_disk)/(1024*1024*1024))/(@disk_total_space($is_disk)/(1024*1024*1024)))*100,2).'%';
$diskk+=byte_format(@disk_free_space($is_disk));
$diskz+=byte_format(@disk_total_space($is_disk));
}
return $disk; www.2cto.com
}
/**
* 取得磁盤使用情況
* @return var
*/
function get_spec_disk($type='system')
{
$disk = array();
switch ($type)
{
case 'system':
//strrev(array_pop(explode(':',strrev(getenv_info('SystemRoot')))));//取得系統盤符
$disk = get_disk_space(strrev(array_pop(explode(':',strrev(getenv('SystemRoot'))))));
break;
case 'all':
foreach (range('b','z') as $letter)
{
$disk = array_merge($disk,get_disk_space($letter));
}
break;
default:
$disk = get_disk_space($type);
break;
}
return $disk;
}
由此你可以擴展你一下,如獲取整體磁盤空間大小,磁盤余下空間。
在這裡也得重新說明一下,如果服務器有軟盤記得要避開,否則會對服務器相關的軟盤運行程序有定的阻礙,使用程序讀取所有磁盤使用情況可能速度比較慢!注意!