странное поведение нехватки памяти на php - PullRequest
2 голосов
/ 18 декабря 2011

привет, я получаю следующую странную ошибку

Неустранимая ошибка: недостаточно памяти (выделено 29097984) (попытка выделить 802454 байт)

когда я делаю ini_get('memory_limit') я получил 256M.

в приведенной выше ошибке сценарий умирает, когда достигает 27M ??

Любое предложение использую учетную запись общего хостинга.

Ответы [ 3 ]

0 голосов
/ 21 декабря 2011

Если вы используете общий хост, невероятно вероятно, что у вас нет прав на изменение предела памяти. Проблема, скорее всего, в том, что вы пытаетесь создать огромный массив; Вы можете попробовать другой подход к любой структуре цикла, которая в настоящее время существует в вашем скрипте. Но без кода никто больше не сможет помочь.

0 голосов
/ 21 декабря 2011

Даже если ограничение памяти составляет 256 мегабайт, это не значит, что ваш скрипт сможет выделить столько. Причина в том, что оперативная память распределяется между различными процессами. Некоторые из них могли бы выделить много памяти и оставить ОС с несколькими мегабайтами, поэтому ваш скрипт не может выделить столько, сколько ему нужно, независимо от установленного ограничения.

На что вам следует обратить внимание - это использовать как можно меньше оперативной памяти. Для результатов базы данных, таких как ваш, лучше использовать SplFixedArray , а не "обычный" массив PHP.

0 голосов
/ 21 декабря 2011

Вам нужно будет "отладить" и добраться до корня проблемы. Я бы начал с увеличения вашего php ограничения памяти до 526M

Используйте это, чтобы сделать это:

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

Этого более чем достаточно, чтобы справиться практически со всем. Если это все еще не работает, то я бы где-то искал бесконечный цикл.

...