Fatal error ...

7 отговора 161 прегледа
#1

Fatal error ...

Fatal error: Allowed memory size of 4194304 bytes exhausted (tried to allocate 2949120 bytes) in /home/ryan/www/Ryan/blog/index.php on line 1960 ...

e takava greshka se poiaviava v edin moi skript, interesnoto e 4e se poiaviava samo pri niakoi hostove a pri drugi ne i sled niakolko refresha se opravia.

Znaete li kak moga da ia izbegna ?

Отговор
в отговор на Flexer #2

Re: Fatal error ...

Ами виждам няколко проблема тук:
1) Какъв е тоя скрипт от 1000++ реда? Това отдалече мирише здраво на лош дизайн..
2) Дори да сме суперкомпетентни (а аз поне не съм), няма да можем да разберем грешката, без да дадеш част от кода поне. Примерно - какво точно прави този ред, какви входни параметри има в това, дето го правиш в този ред и т.н. и т.н. По презумпция малко конфигурации на РНР ще ти позволят да алокираш 2.1 МБ памет, а и за какъв дявол ти е това :) ?

Препоръчвам:
1) Постни повече информация, едва ли някой ще ти открадне скрипта...
2) Прегледай внимателно това, което използваш на този ред. Не е зле да понатъпчеш техните съдържания в някакъв лог, и като стане проблема - да видиш кво точно става и защо - може да ти подскаже
3) Погледни php.ini (Win) или конфигурац. файл на PHP под Linux и търси следният ред:
memory_limit = 8M ; Maximum amount of memory a script may consume (8MB)
Това дава максималният обем памет, дето РНР да използва по време на работата си. Може да го увеличиш, но това *НЕ Е* решение - оправи си дизайна - толкоз памет хич не е на добро...
4) Търпение.....

Поздрави!
Д.

Редактирано от DonAngel на

Отговор
в отговор на DonAngel #3

Re: Fatal error ...

Ami da i az mislia che problema e v goleminata na skripta (80Kb i 2300 lines) ama... sigurno sha se hvana niakoi den da go napravia na par4eta.

Ina4e skripta moje da go svalish ot [линк]

P.S. i invision board ima php`ta po golemi ot 80Kb ama ne im praviat problemi


Редактирано от Flexer на

Отговор
в отговор на Flexer #4

Re: Fatal error ...

WOW.WOOOW!

Значи:
1) Скрипта е много трудно четим . Аз съм програмист от много време, гледал съм какъв ли не код - по нечетимост давам оценка 8 от 10 на този! Предполагам вече имаш проблеми с дебъгването, и те само ще се задълбочават. Горещо ти препоръчвам да идеш на
[линк] - мисля че има какво да видиш там. Като започнеш преработката - съобразявай се с тези стандарти - доста ценно нещо са и много неприятности ще ти спестят.

2) Наистина проблема ти е много странен. Ако правилно съм разбрал, на този ред свършва алокацията на масива find_what. А масива изглежда доста "кротък", за да заеме 2.1 МБ... Направо не знам какво да ти кажа. Или аз съм свалил по-стара версия на кода ти, или положението е много, ама *много* странно. Сигурен ли си, че наистина кода, който съм свалил, е последният?

Поздрави!
Д.

Отговор
в отговор на DonAngel #5

Re: Fatal error ...

AMi da siguren sum che tova e nai-novata versia, vse pak az sum ia kachval tam

A za koda, ne si prav na men mi e mnogo lesno da go raz4itam neznam zashto teb te oburkva no za men koda si e mnogo razbiraem i niamam nikvi problemi s debugvaneto.

Редактирано от Flexer на

Отговор
в отговор на Flexer #6

Re: Fatal error ...

:)
ОК, в такъв случай (щом е последната версия), аз нямам идея какво може да става точно там...
Но за кода - ами най-лесно би било да публикуваш функцията replace с онзи if дето е на един ред и е дълъг 217 символа, и нека общността ти обясни къде е проблема.
Всъщност - аз съм 90% сигурен, че сам пишеш този скрипт - той е толкова "индивидуално" написан, че е невъзможно да се поддържа от друг, освен от автора си. Разбира се, че си е твоя работа как ще си пишеш скриптовете. Но нали всички сме тук, за да се учим един от друг. Та аз ти казвам (на база известна практика относно работа в екипи), че кода ти е много зле като четимост. И оправданието "да, ама само аз ще си го поддържам" не е добро, понеже пишейки подобни неща си създаваш вредни навици...

Е, толкова. Съжалявам, че не можах да помогна повече - ще мисля по проблема и се надявам някой колега, дето е по-наясно от мен, да ти помогне. Но пак ти казвам - скрипта иска сериозно оправяне като "четимост"...

Поздрави и късмет!
Д.

Отговор
в отговор на DonAngel #7

Re: Fatal error ...

Za loshite navici mojebi si prav i poneje do sega sum rabotil sam nad podobni proekti prosto ne mi se e nalagalo da pisha kod koito da e dobre chetim i ot drugi hora.

I vse pak az se nadiavah da opravim prolema s errora

Отговор
в отговор на Flexer #8

Re: Fatal error ...

Mi zna4i opitai da promeni6 red 1993 v index.php na:

fwrite($con_file, "<?php");
fwrite($con_file, $top);
fwrite($con_file, $configs);
fwrite($con_file, $templates);
fwrite($con_file, $functions);
fwrite($con_file, "?>");

poneje tam kato vika6 funkciata tia pravi nova promenliva v koiato buta ostanalite i tova gulta dosta pamet...

osven tova v install.php ima dve ne6ta....
1. moje da dobavi6 <? if (!isset($step)) $step = 1 ?>, v na4aloto
2. na red 318 da promeni6 case Final: na case "Final": 4e ina4e priema Final kato constanta ot define() i niakoi den moje da ne sraboti... zatova davai go na sigurno :)))

Отговор