Какое допустимое использование памяти для страницы PHP?

Я создаю веб-страницу, которая запрашивает базу данных MySQL и (в настоящее время) создает текстовый список результатов. Запросы для завершения одной записи аналогичны запросам:

  • фильм (название, описание и т.д.)
    • актеры в фильме (имя, пол)
    • связанные фильмы

Из любопытства я использовал memory_get_peak_usage() и memory_get_usage():

start   110,440 bytes
peak    656,056 bytes
end 637,976 bytes
time    0.008 seconds

Вышеуказанное не найдено записей!

С 40 записями я достигаю примерно 2 МБ, хотя время остается тем же.

Я знаю, что преждевременная оптимизация - это зло и все, но я должен спросить:

Нужно ли мне перерабатывать? Является ли это использование памяти нормальным? Что считается чрезмерным?

Ответы

Ответ 1

В конечном счете, предпочтительнее оптимизировать, когда удобно, конечно, но использование 2 МБ памяти звучит нормально. PHP4 имеет конфигурацию по умолчанию 8mb и PHP5 16mb. Конечно, много готовых сборников PHP будет иметь разные конфигурации, но, вообще говоря, если вы можете сохранить свое приложение под 8mb, вы можете быть уверены, что он будет очень портативным в этом отношении.

Ответ 2

Очевидно, все зависит от сложности приложения, которое вы создаете. В среднем страницы нашего приложения занимают до 20 МБ (мин) памяти. Это потому, что в сеансе много объектов и много процессов инициализации, которые происходят до того, как script может даже сказать привет миру (аутентификация, управление правами, уведомления,...)

В пространстве памяти много вещей, включая определения классов, глобальные определения, определения функций и т.д. Уменьшение количества загруженных классов (с помощью автоматических включений) - хороший способ сохранить ваши скрипты только с помощью необходимое количество определений классов.

Я не знаю, изменяет ли загрузка расширений использование памяти - это должно быть что-то для тестирования, потому что по умолчанию нам могут не понадобиться все загруженные по умолчанию расширения?

Ответ 3

Лично я устанавливаю ограничение на 8 МБ. Если я превышу это, я попытаюсь улучшить свое приложение. Причина в том, что некоторые общие хосты и конфигурации PHP 4 имеют ограничение по умолчанию 8 МБ на процесс.

Ответ 4

PHP не освобождает память во время выполнения script, поэтому ваш предел памяти должен быть таким же высоким, как и большая часть памяти script. Если большинство a script когда-либо будут потреблять, это 2MB, тогда установите его на 2MB, но если вам нужно 780MB, установите его на это.

У нас есть большие производственные системы с ограничением памяти, установленным более чем на 2 ГБ. Но это, безусловно, очень настроено для нас и для нашего сценария, я бы никогда не защищал его для общедоступных хостинговых сред.

Ответ 5

Пока вы планируете хороший механизм кэширования (кеш-код операции, кеш-объект и т.д.), использование памяти становится менее актуальным. Вы по-прежнему отстаете от общего использования памяти фреймов.

Ответ 6

В PHP известны ограничения ресурсов, в зависимости от того, какую версию вы используете. Текущая версия может обрабатывать 128 МБ, PHP 5.2.0 = 16 МБ и все предыдущие версии 8 МБ.