A PHP beállítások hatása a weboldal stabilitására

Memória-limit, max execution time, upload limit: melyik mire hat és mikor kell hozzányúlni?
A webes alkalmazások optimalizálásának és stabil működésének egyik kevésbé látványos, de annál fontosabb területe a PHP beállítások finomhangolása. Három kifejezés, amely gyakran felmerül a hibakeresés, migrálás vagy új funkciók telepítése során: memory_limit, max_execution_time és upload_max_filesize. Ezek paraméterek nem csupán számok a php.ini fájlban vagy a .htaccess-ben – ezek határozzák meg, mire képes az adott webkörnyezet, és mikor mondja azt, hogy „eddig és ne tovább”.
Mi az a memory_limit, és mit jelent, ha elfogy?
A memory_limit a PHP szkriptek számára elérhető maximális memóriamennyiséget szabályozza. Ha egy weboldal lassan töltődik be, vagy hirtelen „Allowed memory size of X bytes exhausted” hibaüzenettel áll le, akkor jó eséllyel ez a beállítás korlátozza a futást.
Egy egyszerű WordPress oldalnál 128 MB általában elegendő. Azonban ha sok plugin van aktív, vagy olyan bővítmények kerültek telepítésre, amelyek nagy mennyiségű adatot dolgoznak fel (pl. WooCommerce vagy egyedi riportgeneráló eszközök), akkor ez az érték gyorsan kevésnek bizonyul. A 1b.hu rendszerében szerveren belül dinamikusan állítható ez az érték – érdemes tehát nem csak növelni, hanem megérteni, hogy mi eszi a memóriát.
Nagy fájlok feldolgozásakor, több adatbázis lekérdezés vagy nagy tömbökkel dolgozó ciklusok esetén először mindig érdemes naplózni, hogy a script milyen ponton és milyen memóriamennyiségnél fagy le. A hibás memória-limit nem csak a teljesítményt gyilkolja, hanem a hibakeresést is nehezíti, mert az összeomlás nem mindig egyértelmű.
Max execution time – az idő korlátozza az életet
A max_execution_time egy másik korlátozó tényező. Ez határozza meg, hány másodpercig futhat egy PHP szkript, mielőtt a rendszer megszakítja azt. Az alapértelmezett érték 30 másodperc körül van, de sok esetben ez egyszerűen nem elég.
Vegyük példának egy importáló funkciót: ha egy felhasználó több ezer soros CSV-fájlt szeretne feltölteni és feldolgozni, akkor a szkriptnek időre van szüksége, különösen akkor, ha az import nem batch-alapon történik. Egy másik jellemző példa: nagyobb backup-fájlok generálása vagy PDF összeállítása egy plugin által.
Az 1b.hu saját admin felületén az ügyfeleknek lehetősége van kérésre ezt a paramétert emelni, de mindig hangsúlyozzuk: nem az idő növelése a végső megoldás, hanem a szkript optimalizálása. Mert ha egy funkció 120 másodpercig fut, az nem biztos, hogy hosszú távon életképes, főleg egy megosztott tárhelyen.
Upload_max_filesize – mi fér bele egy kérésbe?
Végül, de nem utolsósorban, a upload_max_filesize és a vele együtt mozgó post_max_size. Ezek szabják meg, hogy a felhasználó mekkora fájlt tud feltölteni egy űrlapon vagy adminfelületen keresztül. A legtöbb hiba itt nem technikai, hanem emberi: valaki feltölt egy 30 MB-os PDF-et, miközben az érték 8 MB-ra van állítva. Az eredmény? A feltöltés hibát dob vagy meg sem jelenik az űrlap újratöltése után.
Az 1b.hu felületén erre külön figyelünk, és testreszabott értékeket állítunk be WordPress, Joomla, Laravel vagy egyedi PHP framework használata esetén is. A fejlesztők gyakran figyelmen kívül hagyják, hogy nem elég az upload_max_filesize értékét emelni: a post_max_size értéknek is nagyobbnak kell lennie, különben a POST adat nem kerül továbbításra.
Tartalomfeltöltéssel vagy médiafájlokkal dolgozó weboldalaknál ezt a két értéket érdemes a célcsoporthoz igazítani. Ha videós anyagokat várunk a felhasználóktól, 64 vagy akár 128 MB-os korlát is indokolt lehet. Viszont egy egyszerű kapcsolatfelvételi űrlapnál felesleges a túl magas limit, mert ezzel csak támadási felületet kínálunk.
Mikor kell hozzányúlni?
A legfontosabb szabály: akkor nyúlj ezekhez a paraméterekhez, ha van rá objektív indok. Ne az legyen az első, hogy felemeljük a limitet – először mérjük, logoljuk, értelmezzük.
Ha gyakoriak a memóriakiakadások, nézzük meg, milyen plugin vagy script zabálja a RAM-ot. Ha a futásidő miatt állnak le folyamatok, vizsgáljuk meg, mit csinál addig a szkript, és lehet-e részekre bontani. És ha a feltöltés megy félre, figyeljük a hibaüzeneteket – mert ha egy 20 MB-os fájlt nem enged feltölteni a rendszer, akkor lehet, hogy nem is az upload_max_filesize, hanem a post_max_size a ludas.
Összegzés: paraméterek, amik megmenthetnek – vagy gallyra vágnak
A memory_limit, a max_execution_time és az upload_max_filesize triója olyan, mint a webtárhelyed biztonsági szelepei. Ha túl alacsonyak, megfojtják a működést. Ha túl magasra vannak állítva, akkor rejtett hibákat és biztonsági kockázatokat rejthetnek. A kulcs az egyensúly – és az, hogy ismerd a rendszered határait. A 1b.hu csapatánál ezt napi szinten figyeljük, és nem csak értékeket állítunk, hanem segítünk megérteni is, mi miért történik.
Ez a három beállítás nem csak fejlesztőknek való – bárki, aki weboldalt üzemeltet vagy egyedi alkalmazást futtat, jobban teszi, ha tisztában van ezek hatásával. Mert nem minden hiba plugin- vagy sablonhiba. Néha csak egy számot kell átírni… de tudni kell, melyiket.