2016-05-03 5 views
1

Я извлекаю запись из таблицы mysql, которая возвращает более 0,2 м количество строк в запросе, что, очевидно, занимает много памяти. в моем случае у меня 8 ГБ установлена ​​оперативная память в моей системе с SSD 256 ГБ. Когда я исполняю мою страницу возвращает следующее сообщение об ошибке:Допустимый размер памяти 134217728 байт исчерпан (пытался выделить 42 байта)

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 42 bytes) in D:\xampp\htdocs\classes\CRUD.php on line 84 

Я думаю, я должен нужно использовать многопоточность вместо PHP перебирает строки таблицы? Возможно, я ошибаюсь. Любое предложение/помощь будут оценены.

+0

Это должно быть задано в [sf]. –

+1

Вы должны разбивать на страницы свои результаты, чтобы обрабатывать меньше их за раз, также, по-видимому, ограничение вашей памяти на поток задано равным 132 Мб в конфигурации php. Вы можете увеличить его – peuh

+0

Напишите свой код, чтобы мы могли вам помочь. Возможно, что это что-то в этом цикле, что вызывает истощение памяти. –

ответ

5

По умолчанию php.ini memory_limit - 128 МБ. Вы должны либо:

  • Оптимизация кода использовать нормальное количество данных
  • изменение memory_limit в php.ini на более высокое значение, которое я не рекомендую вообще - с вашим подходом вы ударите эту стену еще раз
1

Вы можете расширить память из вашего файла с помощью следующей строки кода:

ini_set('memory_limit','16M'); 

Добавьте этот код в верхней части файла и ahange 16M, чтобы быть все, что вам это нужно быть и что нужно делать Это.

+0

about about => ini_set ('memory_limit', '2G'); это будет работать? или должна быть какая-то другая хорошая идея? –

+1

Вы можете пойти выше, но, как сказал Масидж Асамблер, это не рекомендуется. Мое решение - быстрое решение. В идеале вам необходимо оптимизировать ваше приложение. –

+1

Вы также должны проверить, можете ли вы в любом случае вызывать ini_set. –