@fattan
программист

PHP — Out of memory — хотя памяти выделили много, так почему?

Вылетает периодически ошибка:
Fatal error: Out of memory (allocated 3145728) (tried to allocate 2097152 bytes) in C:\Program Files\xampp\htdocs\site\index.php on line 92


при этом в нашем php.ini

memory_limit=1024M

Всё работает на xampp под Windows Server

при этом на серваке 32Гб ОЗУ.
А php загибается при попытке выделить 2 мегабайта (tried to allocate 2097152 bytes). Почему такое возможно?
  • Вопрос задан
  • 11481 просмотр
Решения вопроса 1
@fattan Автор вопроса
программист
Выяснилось вот что:
Есть таблица. В таблице 70 000 записей. Общий объем таблицы = 7 Мб. Периодически происходит выборка всех этих записей, и запись их циклом через mysql_fetch_assoc() в массив. Out of memory происходит в основном во время работы этого цикла. Не справляется с записью такого объема данных в массив.

Переписали код. Ошибки перестали валиться.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Denormalization
@Denormalization
Где-то циклическая зависимость скорее всего, вот и падает. Нужно смотреть что там в этом index.php
Ответ написан
nazarpc
@nazarpc
Open Source enthusiast
tried to allocate 2097152 bytes

Значит что память использовалась вся и на вот эти байты уже не хватило места, это не общий объем.
Включайте xdebug и отлаживайте, почти наверняка где-то бесконечный цикл.
Ответ написан
glaphire
@glaphire Куратор тега PHP
PHP developer
У меня была такая проблема, при этом дебаг никак не помогал - память вылетала на абсолютно безобидных участках кода. Помогло обновление с PHP 5.3 до PHP 5.4.
П.С. Сайт был на вордпрессе.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы