X

PHP: Скрипт для потребления памяти

Понадобилось мне протестировать что произойдет когда скрипт съест 5 Гб памяти, а точнее отработает ли настройка memory_limit. Для того, чтобы зарезервировать нужный объем памяти написал скрипт..

<?php

function convert($size)
{
    $unit=array('b','kb','mb','gb','tb','pb');
    return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i];
}

$allocateMemoryInMB = intval($argv[1] ?? 512);

$buffer = [];

do {
    $buffer[] = str_repeat('1', 1024*1024);
    $memUsage = memory_get_usage(true);
    echo convert($memUsage).PHP_EOL; // 123 kb
} while ($memUsage < $allocateMemoryInMB*1024*1024);

echo 'Press any key..'.PHP_EOL;

$handle = fopen ("php://stdin","r");
$line = fgets($handle);
fclose($handle);

Использовать так

php test-mem.php

по-умолчанию скрипт резервирует 512 мб ОЗУ, указать нужный объем памяти можно вот так

php test-mem.php 5120

тут 5120 = кол-во памяти для резервации в мб

Категории: PHP
Тэги: memmemory limitphp