Čo je PHP memory_limit

PHP memory_limit určuje, koľko pamäte na serveri môže jednotlivý skript PHP (alebo PHP worker) maximálne využiť na vykonanie určitej operácie. 

Tento limit chráni server pred nadmernou spotrebou pamäte jedným skriptom. Bráni tak preťaženiu serveru alebo jeho výpadku. 

PHP memory_limit teda zabezpečuje fér podmienky pre všetkých používateľov serveru (všetky weby). Každý web ho môže vyťažovať rovnomerne – tak, aby nespomaľoval weby ostatných. 

Každý poskytovateľ webhostingu si určuje PHP memory_limit podľa svojho uváženia. 

Memory_limit je uvedený v súbore php.ini a zvyčajne je nastavovaný v megabajtoch (napr. vo Webglobe je PHP memory_limit nastavený na 512 MB. 

Prekročenie PHP memory_limit 

Ak PHP skript prekročí nastavený memory_limit, server ho okamžite zastaví a zobrazí chybu typu Allowed memory size exhausted, často s uvedením presného limitu, ktorý bol prekročený. 

Táto chyba môže byť sprevádzaná stavovým kódom 500 (Internal Server Error), keď server nedokáže požiadavku splniť kvôli vyčerpaniu zdrojov. 

TIP: Pre PHP existujú aj ďalšie limity, napr. max_execution_time. 

Čo vedie k vyčerpaniu PHP memory_limitu 

  • Zložitý alebo náročný kód webu, napr. spracovávanie veľkých dátových súborov alebo zložité výpočty. 
  • Náročné pluginy alebo šablóny pri systémoch, ako je WordPress. 
  • Manipulácia s veľkými obrázkami či súbormi (preto si poskytovatelia webhostingov určujú aj upload_max_filesize. 
  • Preťaženie serveru pri vysokom počte nárazových požiadaviek, napríklad pri veľkej návštevnosti alebo DDoS útoku. 

Ako vyčerpanie PHP memory_limit riešiť? 

Na vlastnom serveri si PHP memory_limit navýšite v súbore php.ini. 

Vo webhostingu je však pevne daný a meniť sa nedá.  

Na dlhodobé riešenie problému bude potrebné: 

  1. optimalizovať kód stránky a obmedziť náročné pluginy 
  2. použiť cachovanie na obmedzenie potreby opakovaného spracovania náročných skriptov 
  3. aktualizovať na najnovšiu verziu PHP, ktorá je menej náročná na pamäť 
  4. zvážiť využitie CDN, aby sa zabránilo náhlemu zvýšeniu záťaže. 
Posledná aktualizácia: