Atunci când o pagină PHP dă eroare, cauza poate fi o limită de configurare PHP sau o restricție la nivel de proces impusă de furnizorul de găzduire. memory_limit controlează utilizarea memoriei, max_execution_time controlează durata de execuție a unui script PHP, iar limitele de proces controlează dacă o cerere poate obține sau menține capacitatea de server de care are nevoie.
Simptomul vizibil ajută la diferențierea acestor cazuri. O eroare fatală indică de obicei epuizarea memoriei. O cerere care se oprește după o anumită perioadă de execuție indică o problemă legată de timpul de execuție. O pagină de administrare sau o operațiune de import care rămâne blocată poate indica o problemă legată de disponibilitatea proceselor PHP sau o altă restricție la nivel de cerere.
Cuprins
Ce controlează fiecare limită
| Setare sau restricție | Ce controlează | Model tipic de eroare |
|---|---|---|
memory_limit | Cantitatea de memorie disponibilă pentru un script PHP. | O eroare fatală în timp ce PHP procesează o pagină, o încărcare, o sarcină legată de imagini sau altă operațiune. |
max_execution_time | Cât timp poate rula un script PHP înainte ca serverul să-l oprească. | O pagină, o importare sau o sarcină de fundal se oprește deoarece scriptul durează prea mult. |
max_input_vars | O limită de intrare PHP asociată cu variabilele trimise odată cu o cerere. | Un formular de administrare sau o actualizare a configurației nu reține toate câmpurile completate. |
| Disponibilitatea proceselor PHP | Dacă o solicitare PHP poate fi gestionată de un proces disponibil al serverului. | Solicitările rămân în așteptare sau par blocate, mai ales când mai multe sarcini PHP rulează simultan. |
| Limite ale cererilor | Restricții aplicate unei cereri web individuale sau modului în care acea cerere este procesată. | O cerere este respinsă, întreruptă sau nu poate fi finalizată chiar și atunci când scriptul PHP în sine nu utilizează prea multă memorie. |
Cum se identifică o problemă legată de limita de memorie
memory_limit stabilește limita maximă de memorie pentru un script PHP. PHP utilizează memorie atunci când încarcă aplicația, generează o pagină, procesează o imagine sau gestionează un import. Dacă scriptul atinge această limită, se poate încheia cu o eroare fatală în loc să finalizeze solicitarea.
Această limită este probabil cauza principală atunci când eroarea apare în timpul unei operațiuni care solicită multă memorie, iar mesajul se referă la epuizarea memoriei. Este mai puțin probabil ca aceasta să fie cauza principală atunci când solicitarea pur și simplu rulează mult timp și apoi se oprește fără o eroare legată de memorie.
Parametrii PHP, cum ar fi utilizarea memoriei, dimensiunea fișierelor încărcate și timpul de execuție a scripturilor, pot fi ajustați în mybox prin fișierul .htaccess din directorul principal al site-ului web. Consultați cum se modifică parametrii și limitele PHP înainte de a edita fișierul.
Cum se identifică o problemă legată de timpul de execuție
max_execution_time este limita de timp pentru un singur script PHP. În mybox, funcționează ca un cronometru: dacă un script, cum ar fi un procesor de imagini sau un importator de date, durează prea mult, serverul îl oprește pentru a împiedica scriptul să continue la nesfârșit. Rezultatul este, de obicei, o depășire a timpului de așteptare sau o operațiune care se oprește înainte de a se finaliza.
Concentrați-vă pe max_execution_time atunci când sarcina se execută o perioadă, apoi se oprește înainte de a se finaliza. Mărirea memoriei nu va rezolva problema unui script care are suficientă memorie, dar are nevoie de mai mult timp. Setarea ar trebui modificată doar atunci când se preconizează că sarcina va rula mai mult timp, iar limita curentă este motivul pentru care se oprește.
Timpul de execuție este independent de dimensiunea fișierului încărcat și de utilizarea memoriei. O încărcare de dimensiuni mari poate necesita mai multă memorie sau o limită de încărcare mai mare, în timp ce o importare lentă poate necesita mai mult timp de execuție. Acestea sunt limite diferite și trebuie verificate separat.
Cum afectează max_input_vars formularele de administrare
max_input_vars se referă la variabilele incluse într-o solicitare PHP. Aceasta devine relevantă atunci când un formular de administrare conține multe câmpuri sau setări repetate. Un formular poate părea că se trimite, în timp ce câmpurile care depășesc intervalul de introducere acceptat nu sunt procesate sau salvate.
Acest tip de situație este diferit de o eroare fatală de memorie și de o expirare a timpului de așteptare al scriptului. Dacă se reține doar o parte dintr-un formular mare, verificați max_input_vars înainte de a modifica memory_limit sau max_execution_time.
Când problema este o restricție la nivel de proces sau de solicitare
Limitele de configurare PHP se aplică activității efectuate de un script. Disponibilitatea proceselor PHP este diferită: aceasta se referă la faptul dacă o cerere poate fi procesată de un proces PHP disponibil. Când cererile rămân în așteptare sau mai multe sarcini se blochează, problema poate fi legată de disponibilitatea proceselor, mai degrabă decât de limita de memorie sau de execuție a unui singur script.
Limitele cererilor sunt, de asemenea, separate de setările de memorie și de timp de execuție ale scriptului. O cerere poate eșua din cauza unei restricții la nivel de cerere chiar și atunci când codul PHP nu a atins memory_limit sau max_execution_time. Această distincție este importantă pentru importuri și sarcini de administrare care se opresc înainte de a genera o eroare PHP.
Nu considerați o cerere blocată ca dovadă că o valoare PHP ar trebui mărită. Mai întâi, faceți distincția între o eroare a scriptului și o problemă legată de disponibilitatea procesului. Setările PHP pot fi ajustate prin .htaccess, așa cum a descris mybox, în timp ce disponibilitatea procesului este o problemă la nivel de găzduire, mai degrabă decât o valoare PHP afișată de acel fișier.
Verificați valorile PHP active înainte de a le modifica
Valoarea dintr-un fișier de configurare poate să nu fie cea activă pentru site-ul web. Un raport phpinfo() afișează setările PHP utilizate în prezent de site, inclusiv limitele de memorie, timpul de execuție, modulele încărcate și alte valori de configurare. Utilizați phpinfo() pentru a verifica parametrii PHP curenți.
- Verificați valoarea activă a
memory_limitatunci când eroarea este o eroare fatală legată de memorie. - Verificați
max_execution_timeatunci când un script se oprește după ce rulează prea mult timp. - Verificați
max_input_varsatunci când un formular mare salvează doar o parte din câmpurile sale. - Luați în considerare disponibilitatea procesorilor sau restricțiile privind solicitările atunci când solicitările rămân blocate sau eșuează fără o eroare corespunzătoare legată de limitele PHP.
- Modificați doar setarea care corespunde erorii observate, apoi testați din nou aceeași pagină sau sarcină.
Ce modificări pot fi efectuate în siguranță?
Cea mai sigură modificare este una țintită, bazată pe simptomul eșecului și pe valoarea activă afișată de phpinfo(). Evitați să măriți mai multe limite simultan, deoarece acest lucru elimină distincția dintre cauzele posibile.
Utilizați fișierul .htaccess pentru parametrii PHP pe care mybox vă permite să îi modificați acolo. Utilizarea memoriei, dimensiunea fișierelor încărcate și timpul de execuție a scripturilor sunt exemple de parametri descriși în instrucțiunile mybox. Efectuați o singură modificare, repetați sarcina care a eșuat și comparați rezultatul.
Dacă solicitarea rămâne blocată, modificarea unei valori PHP s-ar putea să nu rezolve cauza. Acest simptom trebuie separat de o eroare fatală clară legată de memorie sau de un timeout de execuție și tratat ca o posibilă restricție a procesului sau a solicitării.
Diagnostic rapid
- Eroare fatală de memorie: verificați
memory_limit. - Scriptul se oprește după ce durează prea mult: verificați
max_execution_time. - Se salvează doar o parte dintr-un formular mare: verificați
max_input_vars. - Solicitările rămân în așteptare sau mai multe sarcini sunt blocate: luați în considerare disponibilitatea lucrătorilor PHP sau o restricție la nivel de solicitare.