PHP memory_get_usage больше, чем memory_limit

Мое PHP-приложение работало немного медленно и в настоящее время не очень эффективно использует память. Весь мой сервер очень часто выходил из строя, и я думаю, что я виноват в этом приложении. Я думал, что я буду контролировать использование памяти и проверить, сколько у меня есть в качестве предела:

echo 'Memory in use: ' . memory_get_usage() . ' ('. memory_get_usage()/1024 .'M) <br>';
echo 'Peak usage: ' . memory_get_peak_usage() . ' ('. memory_get_peak_usage()/1024 .'M) <br>';
echo 'Memory limit: ' . ini_get('memory_limit') . '<br>';

Это показывает следующее:

Memory in use: 629632 (614.921875M) 
Peak usage: 635696 (620.796875M) 
Memory limit: 128M

Как это могло произойти? Используемая память НАМНОГО больше предела памяти? Либо что-то действительно сломано, либо я вообще не понимаю, как memory_limit установка работ (или memory_get_usage())

Спасибо вам всем.

1 ответ

Решение

memory_get_usage возвращает его в байтах, то, что вы рассчитываете, на самом деле находится в kB, Разделите это на 1024 снова иметь это в MB

То же самое касается memory_get_peak_usage

например

echo 'Memory in use: ' . memory_get_usage() . ' ('. ((memory_get_usage() / 1024) / 1024) .'M) <br>';
Другие вопросы по тегам