73 lines
1.4 KiB
PHP
73 lines
1.4 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Disk Status Class
|
|
*
|
|
* http://pmav.eu/stuff/php-disk-status/
|
|
*
|
|
* v1.0 - 17/Oct/2008
|
|
* v1.1 - 22/Ago/2009 (Exceptions added.)
|
|
*/
|
|
|
|
class DiskStatus {
|
|
|
|
const RAW_OUTPUT = true;
|
|
|
|
private $diskPath;
|
|
|
|
|
|
function __construct($diskPath) {
|
|
$this->diskPath = $diskPath;
|
|
}
|
|
|
|
|
|
public function totalSpace($rawOutput = false) {
|
|
$diskTotalSpace = @disk_total_space($this->diskPath);
|
|
|
|
if ($diskTotalSpace === FALSE) {
|
|
throw new Exception('totalSpace(): Invalid disk path.');
|
|
}
|
|
|
|
return $rawOutput ? $diskTotalSpace : $this->addUnits($diskTotalSpace);
|
|
}
|
|
|
|
|
|
public function freeSpace($rawOutput = false) {
|
|
$diskFreeSpace = @disk_free_space($this->diskPath);
|
|
|
|
if ($diskFreeSpace === FALSE) {
|
|
throw new Exception('freeSpace(): Invalid disk path.');
|
|
}
|
|
|
|
return $rawOutput ? $diskFreeSpace : $this->addUnits($diskFreeSpace);
|
|
}
|
|
|
|
|
|
public function usedSpace($precision = 1) {
|
|
try {
|
|
return round((100 - ($this->freeSpace(self::RAW_OUTPUT) / $this->totalSpace(self::RAW_OUTPUT)) * 100), $precision);
|
|
} catch (Exception $e) {
|
|
throw $e;
|
|
}
|
|
}
|
|
|
|
|
|
public function getDiskPath() {
|
|
return $this->diskPath;
|
|
}
|
|
|
|
|
|
private function addUnits($bytes) {
|
|
$units = array( 'B', 'KB', 'MB', 'GB', 'TB' );
|
|
|
|
for($i = 0; $bytes >= 1024 && $i < count($units) - 1; $i++ ) {
|
|
$bytes /= 1024;
|
|
}
|
|
|
|
return round($bytes, 1).' '.$units[$i];
|
|
}
|
|
|
|
}
|
|
|
|
?>
|
|
|