@aopil

Как работает memory_limit в php ini?

У меня установлено значение memory_limit 128M.

На сервере 1 GB Memory

Получается, если запустить одновременно 10 скриптов *128 = 1028 мб то память исчерпается?
Или он как-то выделяет не сразу все 128, а по необходимости? не совсем понимаю как это работает.

Сегодня снизил memory_limit до 50M и получил в лог ошибок:
Allowed memory size of 52428800 bytes exhausted (tried to allocate 80 bytes) in /var/www/script/include/db_functions.php 
Allowed memory size of 52428800 bytes exhausted (tried to allocate 360 bytes) in /var/www/script/include/db_functions.php on line 114
Allowed memory size of 52428800 bytes exhausted (tried to allocate 239 bytes) in /var/www/script/include/db_functions.php on line 115

114 - $query = $this->DB_DO->prepare($sql);
115 - $query->execute($params);

Почему-то каждый раз он пытался выделить разное кол-во памяти для одного действия.
  • Вопрос задан
  • 552 просмотра
Пригласить эксперта
Ответы на вопрос 3
@kandrash
Кратко о себе
Или он как-то выделяет не сразу все 128, а по необходимости

Это.

memory_limit это максимум который может получить ваш скрипт.
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
Если у тебя выборка из бызы выедает 50 метров, ты что-то делаешь ОЧЕНЬ неправильно.
Нормальному пхп скрипту выводящему обычную хтмл страничку нужно край 8 метров.
Ответ написан
Комментировать
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Если на сервере кончится RAM то скорее всего система задействует файл подкачки (SWAP), это когда вместо оперативки будет использоваться жёсткий диск.
Естественно, что жёсткий диск в тысячи раз медленнее RAM памяти, и всё будет жутко тормозить, но в целом жить можно.
https://wiki.archlinux.org/index.php/Swap_(Русский)

memory_limit в php ini ограничивает память которую может использовать каждый РНР скрипт в процессе своей работы. Если скрипт затребует больше памяти чем разрешено то он сдохнет.
В теории вы можете поставить лимит для скрипта в 1Gb и даже больше и посмотреть что станет с сервером.

С вероятностью в 99.999% ваш скрипт можно переписать так что он будет выполнять ту же работу и требовать очень мало памяти.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы