Мне нужно проверить значение, возвращаемое ini_get('memory_limit')
, и увеличить предел памяти, если он ниже определенного порога, однако этот вызов ini_get('memory_limit')
возвращает строковые значения, такие как '128M', а не целые числа.
Я знаю, что могу написать функцию для анализа этих строк (с учетом регистра и конечных 'B'), поскольку я писал их много раз:
function int_from_bytestring ($byteString) {
preg_match('/^\s*([0-9.]+)\s*([KMGTPE])B?\s*$/i', $byteString, $matches);
$num = (float)$matches[1];
switch (strtoupper($matches[2])) {
case 'E':
$num = $num * 1024;
case 'P':
$num = $num * 1024;
case 'T':
$num = $num * 1024;
case 'G':
$num = $num * 1024;
case 'M':
$num = $num * 1024;
case 'K':
$num = $num * 1024;
}
return intval($num);
}
Однако, это становится утомительным, и это похоже на одну из тех случайных вещей, которые уже существуют в PHP, хотя я никогда не находил это. Кто-нибудь знает какой-нибудь встроенный способ разбора этих строк в байтах?