Я создаю веб-страницу, которая запрашивает базу данных 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 МБ, хотя время остается прежним.
Я знаю, что преждевременная оптимизация - это зло и все такое, но я должен спросить:
Мне нужно переделать? Это нормальное использование памяти? Что считается чрезмерным?






В конечном итоге, конечно, предпочтительнее оптимизировать, когда это удобно, но использование 2 МБ памяти - это нормально. PHP4 имеет конфигурацию по умолчанию 8 МБ, а PHP5 16 МБ. Конечно, многие предварительно упакованные сборки PHP будут иметь разные конфигурации, но в целом, если вы можете сохранить свое приложение менее 8 МБ, вы можете быть уверены, что оно будет очень переносимым в этом отношении.
Очевидно, все зависит от сложности создаваемого приложения. В среднем страницы нашего приложения занимают до 20 МБ (мин) памяти. Это потому, что в сеансе много объектов и много процессов инициализации, которые происходят до того, как скрипт сможет даже сказать привет, мир (аутентификация, управление правами, уведомления, ...)
В пространстве памяти хранится множество вещей, включая определения классов, глобальные объекты, определения функций и т. д. Уменьшение количества загруженных классов (с помощью автоматического включения) - хороший способ сохранить ваши скрипты только с необходимым количеством определения классов.
Я не знаю, влияет ли загрузка расширений на использование памяти - это должно быть что-то для тестирования, потому что по умолчанию нам могут не понадобиться все загруженные по умолчанию расширения?
Пока вы планируете хороший механизм кэширования (кэш опкодов, кеш объектов и т. д.), Использование памяти становится менее актуальным. Вы все еще намного ниже обычного использования памяти фреймворком php.
Лично я установил ограничение в 8 МБ. Если я превышаю это, я стараюсь улучшить свое приложение. Причина в том, что некоторые общие хосты и конфигурации PHP 4 имеют ограничение по умолчанию в 8 МБ на процесс.
PHP не освобождает память во время выполнения скрипта, поэтому ваш предел памяти должен быть равен максимальному объему памяти, потребляемому одним скриптом. Если максимум, который когда-либо потребляется скриптом, составляет 2 МБ, установите его на 2 МБ, но если вам нужно 780 МБ, установите его.
У нас есть большие производственные системы с ограничением памяти более 2 ГБ. Но это, очевидно, хорошо настроено для нас, и для нашего сценария я бы никогда не стал защищать это для сред общего хостинга.
PHP имеет известные ограничения ресурсов в зависимости от того, какую версию вы используете. Текущая версия может обрабатывать 128 МБ, PHP 5.2.0 = 16 МБ, а все предыдущие версии 8 МБ.