ubuntu — PHP memory_limit предварительно выделяет память для переполнения стека

На некоторых страницах нашего сайта установлен предел памяти PHP, который в настоящее время составляет 128 МБ. При запросе увеличить ограничение памяти до 256 МБ, инженер нашей хостинговой компании сказал нам, что:

На нашем сервере «средний запрос требует менее 64 МБ оперативной памяти»

а также

«Смещение предела памяти до 256 МБ по существу создает среднее выделение 192 МБ памяти, которое не будет использоваться в большинстве запросов»

Правильно ли это, что количество memory_limit на самом деле предварительно выделено и составляет 192 МБ для большинства наших запросов?

Спасибо!

4

Решение

От: http://php.net/manual/en/ini.core.php#ini.memory-limit

Это устанавливает максимальный объем памяти в байтах, что скрипт
Разрешено выделять. Это помогает предотвратить плохо написанные сценарии для
пожирая всю доступную память на сервере. Обратите внимание, что не иметь
ограничение памяти, установите эту директиву -1.

По моему опыту, многие сайты требуют более 128M.

6

Другие решения

Нет. Он устанавливает максимум, который скрипту разрешено выделять. Он не выделяет сам по себе. Проверьте это с помощью php memory_get_usage функция.

источник

3

Нет. Вы не можете предварительно выделить память с помощью memory_limit.

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

Возможно, он имел в виду, что, увеличив глобальный лимит до 256 миллионов, средний запрос вырос до 192 миллионов. Это будет означать, что многие люди достигают абсурдно низкого предела 64M.

2

Смысл ограничения памяти PHP заключается в том, чтобы «предотвращать плохо написанные сценарии для использования всей доступной памяти на сервере», а не «предварительно выделять объем памяти».

Например из PHP5.6 источник Это просто жесткий предел, который применяется по мере необходимости — или другими словами «Максимальный объем памяти, который может потреблять скрипт».

zend_mm_safe_error(heap, "Allowed memory size of %ld bytes exhausted (tried to allocate %ld bytes)", heap->limit, size);

REF: http://jpauli.github.io/2014/07/02/php-memory.html

1
По вопросам рекламы [email protected]