Skip to content

Instantly share code, notes, and snippets.

@AlifArnado
Created July 1, 2020 15:58
Show Gist options
  • Save AlifArnado/4baba5f2e56720e316da76f2fa9aecf8 to your computer and use it in GitHub Desktop.
Save AlifArnado/4baba5f2e56720e316da76f2fa9aecf8 to your computer and use it in GitHub Desktop.
<?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