2010-07-23 4 views
4

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

Если добавить эти строки в верхней части сценария:

phpinfo(); 
exit(); 

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

Но сценарий все еще ошибки, говоря

Fatal error: Allowed memory size of 1073741824 bytes exhausted 

... который является 1GB, не 5Гб, как я указал.

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

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

ответ

5

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

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

+0

Его любят прокатывать партитуры по старым видеоиграм! – gnarf

+0

Я проверил проверку распределения на 64-битной машине, но мои 64-битные двоичные дроссели php после 490 Megs ... (Это больше, чем предыдущий предел 128M ... но путь меньше, чем новый установленный предел 5120M ...) – ZJR

Смежные вопросы