Увеличить объём памяти для работы скрипта.

12
Sower
На сайте с 30.12.2009
Offline
659
7014

Запускаю скрипт, проходит несколько минут и ошибка:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 8192 bytes) ....

Скрипт индексирует большой объём данных. Когда данных было меньше, работал идеально.

На сервере 4 гига оперативки. Пробую увеличить лимит выделяемой памяти через ISPmanager, не сохраняет, если ставишь больше 1024 мб. Что можно сделать в такой ситуации?

__________________Бесплатная накрутка ПФ: посещаемость, просмотры, переходы с поисковиков по ключевикам, итд.
__________________Все посетители живые, не боты. (http://livesurf.ru/promo/80271)
[umka]
На сайте с 25.05.2008
Offline
456
#1

Для начала попробуйте выставить 256 мб

Лог в помощь!
Joker-jar
На сайте с 26.08.2010
Offline
171
#2

В php.ini директива memory_limit за это отвечает

Sower
На сайте с 30.12.2009
Offline
659
#3
'[umka:
;9570376']Для начала попробуйте выставить 256 мб

Не помогло. Ошибка выскакивает на том же этапе.

Joker-jar:
В php.ini директива memory_limit за это отвечает

Где найти этот файл? Какой командой?

Joker-jar
На сайте с 26.08.2010
Offline
171
#4

Надо через ssh или еще каким-нибудь способом отредактировать. Файл лежит, скорей всего, по пути /etc/php/php.ini или как-то так: /etc/php/apache2/php.ini. После редактирования нужно перезапустить веб-сервер.

[umka]
На сайте с 25.05.2008
Offline
456
#5
Sower:
Не помогло. Ошибка выскакивает на том же этапе.

С той же цифрой? :)

Sower:
Где найти этот файл? Какой командой?

find / -name php.ini

Sower
На сайте с 30.12.2009
Offline
659
#6
'[umka:
;9570516']С той же цифрой? :)

Ага. Значит дело не в лимите?

[umka]
На сайте с 25.05.2008
Offline
456
#7
Sower:
Ага. Значит дело не в лимите?

Значит, что тот лимит, который вы устанавливаете в ISPmanager, не работает (или это не тот лимит).

Я с этой панелью не знаком, но, возможно, после изменения лимитов нужно перезапускать apache.

Romka_Kharkov
На сайте с 08.04.2009
Offline
485
#8

TC, А вы как php скрипт свой выполняете ? через CLI или страничку через www дергаете?

если CLI, то выполните php -i |grep -i ini, там не много выпадет, найдете свой php.ini согласно CLI сборке.

Ну а если www то по идее надо апач передернуть что бы php.ini "пере-применило".

Но из опыта скажу вот что: мне встречался уже скрипт (кстати закрытый ioncube), который выдавал аналогичную ошибку, даже когда memory_limit в php.ini Я ставил 2 GB . :) И он постоянно писал , что не хватает около 5-10Mb :) не находите странным?


Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 8192 bytes) ....

8192 bytes :D

Но там не было возможности разобраться..... если у вас открытый код.... то есть шансы... :)

PS: Хотя, 134217728 / 8 / 8 = 128 :)

PS: Вполне может быть и memory_limit просто :D

Есть около 15.000 ipv4 !!! (http://onyx.net.ua/price.php#ipv4) Качественный хостинг с 2005 года - лучшее клиентам! (http://onyx.net.ua/)
Sower
На сайте с 30.12.2009
Offline
659
#9

В общем вот что нарыл.

По адресу /etc/php5/apache2/php.ini

; Maximum amount of memory a script may consume (128MB)

; http://php.net/memory-limit

memory_limit = 1024M

По адресу /etc/php5/cli/php.ini

; Maximum amount of memory a script may consume (128MB)

; http://php.net/memory-limit

memory_limit = -1

По адресу /etc/php5/cgi/php.ini

; Maximum amount of memory a script may consume (128MB)

; http://php.net/memory-limit

memory_limit = 128M

Больше файлов php.ini на сервере нет, если не считать юзерские, где мыло администратора.

Скрипт запускается через интернет браузер.

Нужно править /etc/php5/cgi/php.ini Так?

Что значит memory_limit = -1, это без лимита? Может везде так поставить, на время работы со скриптом?

Romka_Kharkov
На сайте с 08.04.2009
Offline
485
#10

Sower, создаете файлик a.php в него пишите:


<? phpinfo(); ?>

И узнаете все о своем PHP внутри окружения или как там оно у вас настроено, потом топаете в тот конфиг который там указан, и меняете там memory_limit, перезапускаете апач и пробуете еще раз скрипт. Посмотрим сколько exhausted будет в следующей ошибке если она возникнет вообще :D

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий