Как преднамеренно вызвать «Неустранимая ошибка: допустимый объем памяти xxx байтов исчерпан» - PullRequest
6 голосов
/ 02 сентября 2010

Всякий раз, когда я получал эту ошибку, я просто увеличивал память, чтобы исправить ее. У меня есть случай, когда для целей тестирования я хочу заставить страницу использовать всю память, какой бы большой я ни установил memory_limit.

Я понятия не имею, как это сделать.

EDIT: Я попробовал это:

<?php
echo "start";
@ini_set('memory_limit', '1M');
$test = "a";
while (1) {
    $test = "a" + $test;    
}
echo "done";
?>

Но это не сорвалось. В конце он просто напечатал «стартовый старт», что странно, что его напечатали дважды ...

Я бы хотел простой пример кода, «поместите много вещей в память»… ну, я знаю это очень много.

Ответы [ 7 ]

18 голосов
/ 02 сентября 2010

должен съесть всю память.

$a = 'x';
while (true) {
    $a = $a.$a;
}
8 голосов
/ 02 сентября 2010

Вот проблема:

$test = "a" + $test;

+ в PHP для арифметики, а не для конкатенации строк.Использование:

$test = "a" . $test;
5 голосов
/ 02 сентября 2010
str_pad("",PHP_INT_MAX);
1 голос
/ 02 сентября 2010
<?php
$limit = ini_get('memory_limit');
$last = strtolower($limit[strlen($limit)-1]);
switch($last) {
    case 'g':
        $limit *= 1024;
    case 'm':
        $limit *= 1024;
    case 'k':
        $limit *= 1024;
}
$limit = $limit + 1;//not needed actually, I assume the script has consumed 1 byte of memory by now...
$foo = `dd if=/dev/zero bs=$limit count=1`;
//or, if you don't like the command line:
$bar = str_repeat($a,$limit);
1 голос
/ 02 сентября 2010

Напишите функцию PHP, которая пытается найти шаблон в / dev / random

1 голос
/ 02 сентября 2010
  1. Загрузить все изображения Google Maps.
  2. Затем измените их размер с помощью GD в масштабе 1-1.
1 голос
/ 02 сентября 2010

Вы можете сделать бесконечный цикл, хотя я бы посоветовал против этого.

Вы также можете открывать / считывать в память большие файлы, которые превышают предел памяти, вы также можете написать цикл, который будет генерироватьстрока с количеством байтов, которое будет превышать предел памяти.

Что лучше, без понятия.Но есть пара вариантов, доступных для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...