mirror of
http://124.126.16.154:8888/singularity/HyperfDevelopmentKit.git
synced 2026-01-15 00:35:08 +08:00
feat(utils): 增加了转换存储空间大小的函数
byte -> b/kb/mb/gb/tb/pb Signed-off-by: 李东云 <dongyun.li@luxcreo.ai>
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Singularity\HDK\Utils\Service;
|
||||
|
||||
use Closure;
|
||||
@@ -237,15 +239,60 @@ class UtilsService
|
||||
ArrayShape(['size' => 'float', 'unit' => 'string']),
|
||||
Pure
|
||||
]
|
||||
public function convertMemorySize(
|
||||
public function convertStorageSize(
|
||||
float|int|string $size,
|
||||
bool $unitToUpper = false,
|
||||
int $precision = 2
|
||||
): array {
|
||||
$unit = ['b', 'kb', 'mb', 'gb', 'tb', 'pb'];
|
||||
$i = floor(log($size, 1024));
|
||||
if ($size > 0) {
|
||||
$i = floor(log($size, 1024));
|
||||
$size = round($size / pow(1024, $i), $precision);
|
||||
} else {
|
||||
$i = 0;
|
||||
$size = 0;
|
||||
}
|
||||
return [
|
||||
'size' => round($size / pow(1024, $i), $precision),
|
||||
'size' => $size,
|
||||
'unit' => $unitToUpper ? strtoupper($unit[$i]) : $unit[$i],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 将时长转换为带单位时间
|
||||
*
|
||||
* @param int|float $duration 时长(单位:ms)
|
||||
* @param bool $unitToUpper
|
||||
* @param bool $format
|
||||
* @param integer $precision
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
#[
|
||||
ArrayShape([
|
||||
'duration' => 'float',
|
||||
'unit' => 'string',
|
||||
])
|
||||
]
|
||||
public function convertDuration(
|
||||
int|float $duration,
|
||||
bool $unitToUpper = false,
|
||||
bool $format = true,
|
||||
int $precision = 3
|
||||
): array {
|
||||
$unit = ['ms', 's'];
|
||||
|
||||
if ($duration > 1) {
|
||||
$i = floor(log($duration, 1000));
|
||||
$duration = round($duration / pow(1000, $i), $precision);
|
||||
} elseif ($duration < 1) {
|
||||
$i = 0;
|
||||
} else {
|
||||
$i = 0;
|
||||
$duration = 0;
|
||||
}
|
||||
return [
|
||||
'duration' => $format ? number_format($duration, $precision) : $duration,
|
||||
'unit' => $unitToUpper ? strtoupper($unit[$i]) : $unit[$i],
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user