Ultramaratonist, Galantom, organizator de evenimente sportive

PHP Fatal error: Allowed memory size of 33554432 bytes exhausted

1.32K 4

PHP Fatal error: Allowed memory size of 33554432 bytes exhausted

Aceasta este o eroare care pare sa puna la incercare multi coderi php incepatori, asa ca dupa ce am raspuns de mai multe ori la aceasta intrebare pe forumuri m-am gandit sa scriu acest post pentru ca data viitoare sa dau acest link fara sa mai scriu aceasi explicatie din nou, sau poate doamne ajuta o sa caute pe google si o sa gaseasca aceasta pagina.

Mai intai sa intelegem de ce aparea aceasta eroare, daca nu v-ati dat seama din titlu, ea apare fiindca scriptul tau foloseste mai multa memorie decat e alocat in mod normal unui script php. Aceasta se intampla din cateva motive pe care le voi enumera acum :

  • Output-ul scriptului tau ( HTML ) este prea mare ( se intampla destul de rar )
  • scriptul foloseste memoria peste limita datorita varaibilelor folosite sau cererilor facute ( variabile POST FILES etc. – cea mai frecventa cauza )
  • Exista un bug in scriptul tau care face ca scriptul sa consume asa de multa memorie

Acum nu trebuie sa te sperii, nu este o eroare asa de grava si poate fi remediata chiar foarte usor deobicei. Pentru a rezolva problema poti incerca ormatoarele :

  • sa optimizezi scriptul ca sa nu mai manance atata memorie ( destul de logic nu ? )
  • sa cauti eventualele bug-uri care ar putea cauza folosirea excesiva a memoriei
  • sa minimizezi output-ul scriptului
  • sa maresti varaibila de configurare php memory_limit fie in php.ini ( daca ai acces ) sau chiar in scriptul php folosind functia ini_set() ( ex: ini_set(‘memory_limit’,’32MB’); )

Limita default de 8MB a fost implementata in php pentru a opri scripturile de a rula atunci cand incep sa consume o cantitate de memorie prea mare din memoria totala a serverului, lucru care daca ar fi lasat sa continue ar putea cauza caderea serverului. Metoda cea mai buna de a corecta aceasta eroare ar fi de a optimiza scriptul php si a cauta eventulele bug-uri, decat de a mari limita de memorie metoda intradevar mai usoara si adoptata de foarte multi coderi ( desigur sunt si cazuri cand aceasta este singura solutie ) .

Sper ca acest articol v-a fost de ajutor si astept comentariile voastre.

4 Comments

Lasa un comentariu

Your email address will not be published.