Допустимый размер памяти исчерпан, но memory_get_peak_usage говорит иначе

На моем сервере у меня есть следующая ошибка:

Допустимый размер памяти 268435456 байт.

Это происходит в цикле (foreach one) и когда я проверяю использование памяти в цикле с помощью

memory_get_peak_usage(); 

Я 7254128 который далеко от 268435456 исчерпан!

Я проверил в нескольких местах, и использование памяти не растет дико, поэтому я действительно не знаю, где проблема!

Тот же скрипт отлично работает на моем локальном компьютере, где я установил ограничение памяти только на 16M в моем файле php.ini

Вот код, вызывающий проблему, но я думаю, что это будет не очень полезно, это из плагина question2answer с открытым исходным кодом:

 foreach ($badges as $slug => $info) { $badge_name=qa_badge_name($slug); if(!qa_opt('badge_'.$slug.'_name')) qa_opt('badge_'.$slug.'_name',$badge_name); $name = qa_opt('badge_'.$slug.'_name'); } 

    Я сильно подозреваю, что ваша проблема будет вызвана «неправильной функцией» в стандартной библиотеке соединителей MySQL. Когда строка, содержащая поле «длинный блок» или «длинный текст», извлекается из базы данных. Вместо того, чтобы выделять точный размер, необходимый для данных, библиотека MySQL пытается выделить наибольший размер, который может быть необходим для хранения строки. т.е. 4 гигабайта памяти.

    Самый простой способ исправить это – переключиться на использование MySQL ND-коннектора, у которого нет этой «функции»,

    Использование массивной памяти PHP для SQL-запроса

    Допустимый размер памяти 67108864 байт.

    Я проверяю использование памяти в цикле с помощью memory_get_peak_usage (); Я получаю 7254128, который далеко от 268435456 исчерпан!

    Это верно. Распределение памяти не работает, поэтому использование максимальной памяти никогда не показывает огромного распределения, как при использовании.

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