Created
July 1, 2020 15:58
-
-
Save AlifArnado/4baba5f2e56720e316da76f2fa9aecf8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
echo '<pre>'; | |
function scan_disk($dir = '', $max_limit = 0) { | |
if ($max_limit > 0) { | |
$total_convert_limit = toByteSize($max_limit); | |
$total_size = $total_convert_limit - folderSize($dir); | |
if ($total_size < -1) { | |
$return_array = array( | |
'size_folder_origin' => folderSize($dir), // total disk size folder | |
'size_folder_convert' => format_size(folderSize($dir)), | |
'free_space' => $total_size, // total sisa folder | |
'free_space_convert' => format_size($total_size), // total sisa folder | |
'limit_size' => $total_convert_limit, | |
'limit_size_convert' => format_size($total_convert_limit), | |
'status' => 0, | |
'keterangan' => 'tidak tersedia' | |
); | |
} else { | |
$return_array = array( | |
'size_folder_origin' => folderSize($dir), // total disk size folder | |
'size_folder_convert' => format_size(folderSize($dir)), | |
'free_space' => $total_size, // total sisa folder | |
'free_space_convert' => format_size($total_size), // total sisa folder | |
'limit_size' => $total_convert_limit, | |
'limit_size_convert' => format_size($total_convert_limit), | |
'status' => 1, | |
'keterangan' => 'tersedia' | |
); | |
} | |
} else { | |
$return_array = array( | |
'size_folder_origin' => folderSize($dir), // total disk size folder | |
'size_folder_convert' => format_size(folderSize($dir)), | |
'free_space' => 'limit not set', // total sisa folder | |
'free_space_convert' => 'limit not set', // total sisa folder | |
'limit_size' => 'limit not set', | |
'limit_size_convert' => 'limit not set', | |
'status' => 1, | |
'keterangan' => 'tersedia' | |
); | |
} | |
return $return_array; | |
} | |
function folderSize ($dir) | |
{ | |
$size = 0; | |
foreach (glob(rtrim($dir, '/').'/*', GLOB_NOSORT) as $each) { | |
$size += is_file($each) ? filesize($each) : folderSize($each); | |
} | |
return $size; | |
} | |
function format_size($size) { | |
$mod = 1024; | |
$units = explode(' ','B KB MB GB TB PB'); | |
for ($i = 0; $size > $mod; $i++) { | |
$size /= $mod; | |
} | |
return round($size, 2) . ' ' . $units[$i]; | |
} | |
function toByteSize($p_sFormatted) { | |
$aUnits = array('B'=>0, 'KB'=>1, 'MB'=>2, 'GB'=>3, 'TB'=>4, 'PB'=>5, 'EB'=>6, 'ZB'=>7, 'YB'=>8); | |
$sUnit = strtoupper(trim(substr($p_sFormatted, -2))); | |
if (intval($sUnit) !== 0) { | |
$sUnit = 'B'; | |
} | |
if (!in_array($sUnit, array_keys($aUnits))) { | |
return false; | |
} | |
$iUnits = trim(substr($p_sFormatted, 0, strlen($p_sFormatted) - 2)); | |
if (!intval($iUnits) == $iUnits) { | |
return false; | |
} | |
return $iUnits * pow(1024, $aUnits[$sUnit]); | |
} | |
?> | |
// ** output ***/ | |
$dir = "D:/Nas/sa"; | |
$SIZE_LIMIT = '2.5GB'; | |
print_r(scan_disk($dir)); | |
Array | |
( | |
[size_folder_origin] => 2189691130 | |
[size_folder_convert] => 2.04 GB | |
[free_space] => limit not set | |
[free_space_convert] => limit not set | |
[limit_size] => limit not set | |
[limit_size_convert] => limit not set | |
[status] => 1 | |
[keterangan] => tersedia | |
) | |
/** setting parameter limit */ | |
$SIZE_LIMIT = '2.5GB'; | |
print_r(scan_disk($dir, $SIZE_LIMIT)); | |
Array | |
( | |
[size_folder_origin] => 2189691130 | |
[size_folder_convert] => 2.04 GB | |
[free_space] => 494663430 | |
[free_space_convert] => 471.75 MB | |
[limit_size] => 2684354560 | |
[limit_size_convert] => 2.5 GB | |
[status] => 1 | |
[keterangan] => tersedia | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment