Как еще скрипт PHP CLI может определить предел памяти? - PullRequest
4 голосов
/ 23 июля 2010

Мне нужно запустить сценарий PHP CLI и дать ему МНОГО памяти (это автоматический генератор документации, который должен охватывать большую базу кода). У меня есть мощный компьютер, и я выделил php 5 ГБ как в php.ini, так и во встроенном объявлении ini_set('memory_limit','5120M') в файле сценария.

Если я добавлю эти строки в начало скрипта:

phpinfo();
exit();

... он утверждает, что имеет ограничение памяти 5120M, как я указал.

Но скрипт по-прежнему выдает ошибку: 1010 *

Fatal error: Allowed memory size of 1073741824 bytes exhausted

... что составляет 1 ГБ, а не 5 ГБ, как я указал.

Есть ли какое-либо другое место, где сценарий может искать ограничение памяти? Это работает в Fedora Linux.

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

1 Ответ

5 голосов
/ 23 июля 2010

Свойство лимита кучи - это size_t, который на 32-битном компьютере составляет 32 бита.Если это в байтах, это ограничит ограничение памяти до 4 ГБ.Вы можете попробовать запустить его на 64-битной машине с 64-битным PHP.

Редактировать: подтверждено, heap-> limit это size_t (unsigned int) и в байтах.Значение memory_limit, равное -1, устанавливает ограничение heap-> limit в 4 ГБ и не отключает его, как следует из документации.Если установить значение 5 ГБ, оно будет равно 1 ГБ.

...