Неустранимая ошибка PHP: допустимый объем памяти 2388608 байт - PullRequest
0 голосов
/ 18 марта 2010

Я получаю это, когда пытаюсь запустить свой PHP. Когда я закомментирую метод execute () базы данных, он работает без ошибок. Но это мне не сильно помогает. Пожалуйста, помогите: -)

Ответы [ 4 ]

3 голосов
/ 18 марта 2010

Как правило, вы должны оптимизировать свой запрос / execute (), например, не используйте SELECT * FROM, иначе ORM также может вызвать проблемы с памятью.

Временное решение: увеличьте размер памяти:

ini_set ( "memory_limit", "5М");

5M устанавливает ограничение в 5 мегабайт. Если это не работает, попробуйте установить значение в php.ini.

Приветствие.

3 голосов
/ 18 марта 2010

Используете ли вы "SELECT *" в запросе? Если да, и вы извлекаете TON строк, у PHP недостаточно памяти для размещения всех полей.

Вы можете увеличить ограничение памяти PHP на:

ini_set('memory_limit', '32M');
1 голос
/ 18 марта 2010

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

PHP имеет memory_size_limit (устанавливается в php.ini), который устанавливает максимальный объем памяти, который PHP может использовать для обработки вашего скрипта. Если вы попытаетесь прочитать большое количество записей и, скажем, сохранить их в массиве, PHP, скорее всего, не хватит памяти. Одна вещь, которую вы можете сделать, это увеличить ограничение размера памяти, скажем, с 2 мегабайт (2M) до 32M.

Как уже упоминалось, вы также можете использовать ini_set('memory_limit', '32M') или аналогичный, если у вас есть доступ для этого на вашем хосте.

Но независимо от того, разрешено ли вам редактировать файл php.ini, вам действительно следует искать более эффективный способ получения и хранения ваших данных. Попробуйте упростить запрос, ограничить результаты запроса или просто использовать что-то вроде while ($row = $db->fetch_row) для работы с одной строкой результатов за раз.

0 голосов
/ 18 марта 2010

Если вы используете PHP 5.3 с mysqlnd, имейте в виду, что использование памяти «MySQL» теперь считается использованием памяти PHP. Ранее память, используемая libmysql, не учитывалась в memory_get_usage().

Мы изменили многие из наших тяжелых запросов, чтобы использовать небуферизованные запросы , что снижает использование памяти.

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