Мне нужно проверить значение, возвращаемое ini_get('memory_limit')
, и увеличить предел памяти, если он ниже определенного порога, однако этот вызов ini_get('memory_limit')
возвращает строковые значения, такие как "128M", а не целые числа.
Я знаю, что могу написать функцию для синтаксического анализа этих строк (учитывая случай и учитывать "В учетную запись" ), поскольку я написал их много раз:
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, хотя я ее никогда не нашел. Кто-нибудь знает какой-либо встроенный способ анализа этих строк байтов?