Øk skriptutførelsestiden. Økt utførelsestid for et PHP-skript med Nginx. Hvorfor målinger i programmering?

Hvis du har et stort prosjekt eller en server med begrensede ressurser, vil du ofte se feilen "504 Gateway Time-out".

Du kan følge trinnene nedenfor for å øke tidsavbruddsverdien. I PHP er standarden 30 sekunder.

Endringer i php.ini

Hvis du vil endre maksimal utførelsestid for PHP-skript fra 30 sekunder (standard) til 300 sekunder.

Nano /etc/php5/fpm/php.ini

Installere...

Maks_utførelsestid = 300

I Apache PHP kjører som en modul, vil disse endringene være nok. Men i vårt tilfelle må vi gjøre endringer flere steder.

Endringer i PHP-FPM

Dette er nødvendig hvis du har fjernet kommentaren til request_terminate_timeout-parameteren tidligere. Som standard blir den kommentert ut og tar verdien for max_execution_time funnet fra php.ini

Åpning...

Nano /etc/php5/fpm/pool.d/www.conf

Installerer...

Request_terminate_timeout = 300

Endringer i Nginx Config

Øker tidsbegrensningen for ett domene eksempel.com

Nano /etc/nginx/sites-available/example.com plassering ~ \.php$ (inkluder /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_read_timeout 300; }

Hvis du vil øke tidsbegrensningen for alle domener på serveren din, kan du redigere hovedkonfigurasjonsfilen for nginx.conf:

Nano /etc/nginx/nginx.conf

Legg til følgende parameter i http(..)-delen

Http(#... fastcgi_read_timeout 300; #... }

Har du noen gang fått en feilmelding Fatal feil: Maksimal utførelsestid på 30 sekunder overskredet i WordPress? Denne feilen betyr at det kjørende PHP-skriptet krevde mer tid å fullføre enn grensen som er satt, og skriptet ble stoppet på grunn av dette. Denne guiden vil hjelpe deg å forstå spørsmålet om hvordan du kan øke skriptutførelsestiden i PHP og dermed løse feilen som har oppstått.

Før du starter denne veiledningen, sjekk at du har:

  • Tilgang til den administrative konsollen til WordPress-siden din (engelsk)

Trinn 1 – Installer WP Maximum Execution Time Exceeded Plugin

WordPress har et stort fellesskap, så det er en praktisk plugin eller flere for hver funksjonalitet du trenger. Vår situasjon er intet unntak; for å øke skriptutførelsestiden i PHP, kan du bruke WP Maximum Execution Time Exceeded plugin og fikse feilen som har oppstått. Du finner detaljerte instruksjoner om hvordan du installerer WordPress-pluginen.

Denne plugin-en gjør endringer i .htaccess-filen og øker tidsgrensene for skriptutførelse. Etter at du har installert plugin, trenger du ikke gjøre noe annet, alt er allerede gjort av plugin. Programtillegget har ingen innstillingsside, så hvis du ønsker å returnere de tidligere innstillingene, sletter du bare plugin-modulen og .htaccess vil bli returnert til sin opprinnelige form.

Trinn 2 – Redigere .htaccess-filen manuelt

Hvis du allerede har mange plugins installert og du ikke vil bruke en ekstra eller det bare ikke hjalp deg med å bli kvitt feilen, kan du gjøre endringer i .htaccess-filen manuelt for å øke maksimal utførelse tidsbegrensning. Den enkleste måten å bruke Filbehandler plassert i kontrollpanelet. Hvis du ikke vet hvordan du finner .htaccess-filen, vennligst se de detaljerte instruksjonene. Du må skrive inn følgende kode i .htaccess-filen nederst og lagre den ved å klikke Lagre:

Php_value max_execution_time 60

Dette vil øke verdien av parameteren max_execution_time og, for PHP, skriptutførelsestiden til 60 sekunder (1 minutt). Hvis du fortsatt får denne feilen, kan du prøve å øke den enda mer - opptil 120/180 sekunder og så videre.

Trinn 3 – Endre verdien for max_execution_time i cPanel

Hvis du bruker cPanel, kan du øke parameteren max_execution_time direkte gjennom cPanel. Gå til seksjon Velg PHP-versjon (Velg PHP-versjon).

Øk verdien du ser i linjen max_execution_time. Vanligvis er den satt til 30 sekunder som standard, i vårt eksempel økte vi den til 60 sekunder. Klikk Søke om(Bruk) for å lagre endringene.

Det er alt, du har vellykket økt grenseparameterverdien max_execution_time for nettstedet ditt.

Konklusjon

Ved å følge denne veiledningen har du lært 3 måter å øke på max_execution_time for WordPress, for å endre skriptutførelsestiden i PHP og bli kvitt feilen Fatal feil: Maksimal utførelsestid overskredet. Hvis du bruker delt hosting og ingen av løsningene fungerer for deg, så kontakt hostingleverandøren din for å sjekke hva dine faktiske restriksjoner er og om de i det hele tatt kan endres.

Hvis du utvikler et stort prosjekt, kan det ta mye tid å behandle noen data. Ulike vertssider har sine egne grenser for slike handlinger, og hvis behovet for å øke denne tiden førte deg hit, vil jeg fortelle deg i detalj hvordan dette kan gjøres.

For at du skal forstå hva vi snakker om, vil jeg gi et lite eksempel. Hvis du går utover den angitte tidsrammen, kan du få følgende feilmelding:

Fatal feil: Maksimal utførelsestid på 30 sekunder overskredet i site.php på linje 19

Jeg skal fortelle deg om 4 måter å bli kvitt det på.

Men det er verdt å starte med det faktum at i hvert enkelt tilfelle kan det hende at alle de oppførte metodene ikke fungerer, siden noen vertsleverandører forbyr å endre denne parameteren selv.

Øke utførelsestiden for et PHP-skript gjennom php.ini-konfigurasjonsfilen

Som den første måten å øke utførelsestiden for skriptet, vil vi bruke konfigurasjonsfilen php.ini.

For å finne ut nøyaktig hvor denne filen ligger, les.

Åpne den på en måte som passer deg og sett inn helt nederst:

Maks_utførelsestid = 300;

Hvor " 300 "betyr 300 sekunder (endre til ditt). Denne filen er dessverre ikke tilgjengelig for redigering av brukere på alle vertssider.

Øke utførelsestiden for et PHP-skript gjennom den innebygde "ini_set"-funksjonen

Den andre metoden er basert på å bruke funksjonen " ini_set" Du setter den direkte inn i selve scriptfilen, gjerne helt øverst. Eksempel:

Her er meningen " 300 «Du endrer også til det du trenger på sekunder. Merk at når du bruker PHP i sikker modus, vil ikke denne funksjonen være tilgjengelig.

Øke utførelsestiden for et PHP-skript gjennom den innebygde funksjonen "set_time_limit"

Den tredje metoden, sannsynligvis en av de mest populære, er å bruke " set_time_limit» for å endre utførelsestiden for skriptet. Brukes også direkte i selve PHP-filen. Eksempel:

her" 300 "Du endrer også til den verdien du trenger. Det er lurt å sette inn koden helt øverst.

Øke utførelsestiden for et PHP-skript gjennom .htaccess-filen

Det siste alternativet er å redigere filen .htaccess, som ligger ved roten av nettstedet ditt (hvis det ikke eksisterer, opprett det).

Helt øverst i denne fillimen:

Php_value max_execution_time 300

Betydning" 300 "Du endrer det også til ditt.

Merk, at i alle tilfeller er skriptutførelsestiden angitt i sekunder. I tillegg kan parameterverdien i alle metoder ta " 0 ", som betyr ubegrenset utførelsestid.

Hvordan kan jeg finne ut hvor mye tid som er avsatt til å utføre et PHP-skript?

Etter at du har prøvd å endre utførelsestiden for skriptet ved hjelp av en av metodene, må du finne ut om du virkelig lyktes.

For å gjøre dette, lag en PHP-fil i roten av nettstedet ditt, hvor du vil sende ut verdien av den angitte tiden:

Hvis tiden er lik det du har angitt, gratulerer, du har oppnådd ønsket mål. Ellers kan du lese artikkelen på nytt, skrive i kommentarfeltet om problemet ditt eller videresende det til din vertsleverandør.

Hvis du utvikler et stort prosjekt, kan det ta mye tid å behandle noen data. Ulike vertssider har sine egne grenser for slike handlinger, og hvis behovet for å øke denne tiden førte deg hit, vil jeg fortelle deg i detalj hvordan dette kan gjøres.

For at du skal forstå hva vi snakker om, vil jeg gi et lite eksempel. Hvis du går utover den angitte tidsrammen, kan du få følgende feilmelding:

Fatal feil: Maksimal utførelsestid på 30 sekunder overskredet i pandoge_com.php på linje 19

Jeg skal fortelle deg om 4 måter å bli kvitt det på.

Men det er verdt å starte med det faktum at i hvert enkelt tilfelle kan det hende at alle de oppførte metodene ikke fungerer, siden noen vertsleverandører forbyr å endre denne parameteren selv.

Øke utførelsestiden for et PHP-skript gjennom php.ini-konfigurasjonsfilen

Som den første måten å øke utførelsestiden for skriptet, vil vi bruke konfigurasjonsfilen php.ini.

For å finne ut nøyaktig hvor denne filen ligger, les.

Åpne den på en måte som passer deg og sett inn helt nederst:

Maks_utførelsestid = 300;

Hvor " 300 "betyr 300 sekunder (endre til ditt). Denne filen er dessverre ikke tilgjengelig for redigering av brukere på alle vertssider.

Øke utførelsestiden for et PHP-skript gjennom den innebygde "ini_set"-funksjonen

Den andre metoden er basert på å bruke funksjonen " ini_set" Du setter den direkte inn i selve scriptfilen, gjerne helt øverst. Eksempel:

Her er meningen " 300 «Du endrer også til det du trenger på sekunder. Merk at når du bruker PHP i sikker modus, vil ikke denne funksjonen være tilgjengelig.

Øke utførelsestiden for et PHP-skript gjennom den innebygde funksjonen "set_time_limit"

Den tredje metoden, sannsynligvis en av de mest populære, er å bruke " set_time_limit» for å endre utførelsestiden for skriptet. Brukes også direkte i selve PHP-filen. Eksempel:

her" 300 "Du endrer også til den verdien du trenger. Det er lurt å sette inn koden helt øverst.

Øke utførelsestiden for et PHP-skript gjennom .htaccess-filen

Det siste alternativet er å redigere filen .htaccess, som ligger ved roten av nettstedet ditt (hvis det ikke eksisterer, opprett det).

Helt øverst i denne fillimen:

Php_value max_execution_time 300

Betydning" 300 "Du endrer det også til ditt.

Merk, at i alle tilfeller er skriptutførelsestiden angitt i sekunder. I tillegg kan parameterverdien i alle metoder ta " 0 ", som betyr ubegrenset utførelsestid.

Hvordan kan jeg finne ut hvor mye tid som er avsatt til å utføre et PHP-skript?

Etter at du har prøvd å endre utførelsestiden for skriptet ved hjelp av en av metodene, må du finne ut om du virkelig lyktes.

For å gjøre dette, lag en PHP-fil i roten av nettstedet ditt, hvor du vil sende ut verdien av den angitte tiden:

Hvis tiden er lik det du har angitt, gratulerer, du har oppnådd ønsket mål. Ellers kan du lese artikkelen på nytt, skrive i kommentarfeltet om problemet ditt eller videresende det til din vertsleverandør.

Fra forfatteren: sønnen til min venn ble så interessert i kjemi at han begynte å utføre forskjellige "tester" hjemme. Etter at lysekronen på kjøkkenet ble deres "offer", ba faren ham endre preferansene sine. Som et resultat ble barnet interessert i statistikk og bestemte seg for å beregne gjennomsnittlig brenntid for en kamp. Resultatet var at hele leiligheten nesten tok fyr. Jeg rådet den kommende vitenskapsmannen til å begynne å programmere og angi utførelsestiden for PHP-skriptet.

Hvorfor målinger i programmering?

Først av alt er det tryggere enn kjemi og statistikk. Men faktisk er utførelsestiden for programkoden en viktig parameter som påvirker ytelsen til hele ressursen og dens individuelle moduler. Denne parameteren er mer etterspurt under optimalisering og testing.

La oss forestille oss litt. La oss forestille oss at det er en slags "hjemmeskrevet" motor, som utvikleren "lastet opp" til en god hosting og lanserte (basert på den) nettstedet hans. Men av en eller annen grunn går det veldig tregt å laste ressursen på brukersiden.

I en slik situasjon vil i utgangspunktet alle støtene falle på hosteren. Mest sannsynlig vil en sint programmerer sende inn en klage til vertsstøttetjenesten. De sier at vilkårene i kontrakten ikke blir oppfylt, siden er knapt "levende" ...

Men faktisk kan problemet med sakte lasting av sider av en dynamisk ressurs være skjult i selve motoren. Og for ikke å se ut som en "dummie" senere, måler en erfaren utvikler alltid utførelsestiden til et PHP-skript før han leverer et prosjekt.

PHP-funksjoner

Jeg har alltid kalt det et av de mest praktiske programmeringsspråkene. For å spore kjøretiden til koden, trenger ikke utvikleren å skrive lange "talmuds" for å avskjære hver linje i skriptet. Denne teknologien implementerer flere spesialiserte verktøy. Den viktigste er funksjonen microtime(). Den returnerer tiden (i millisekunder) som har gått siden begynnelsen av 1970. Den såkalte «begynnelsen av Unix-æraen». Hvis du sender parameteren get_as_float til funksjonen med verdien sann, vil den returnere tidsperioden i form av hele sekunder og brøkdels millisekunder.

Prinsippet for å bruke microtime() er som følger: funksjonen kalles i begynnelsen av skriptet og på slutten av det. Deretter trekkes startverdien fra den siste verdien. Slik beregner du utførelsestiden for et skript:

"; $last=microtime(true); $value=$last-$first; ekko "Skriptet er utført i: ".$value; ?>

Endre kjøretiden for koden

I PHP kan skriptets kjøretidsverdi begrenses programmatisk (redusere eller øke). For å gjøre dette brukes flere funksjoner, som hver overskriver et parametersett i konfigurasjonsfilen (php.ini).
La oss først endre koden vår og øke antall loop-iterasjoner med 20 ganger til 200 millioner. Hvis alt er bra, bør du få en fatal feilmelding etter å ha kjørt skriptet.

Dette betyr at i innstillingene er parameteren max_execution_time satt til standardverdien (30 sekunder). La oss øke den maksimale utførelsestiden for et skript i PHP med 3 ganger.

set_time_limit(90);

Nå mottar vi ingen feilmeldinger.