Rritja e kohës së ekzekutimit të skriptit. Rritja e kohës së ekzekutimit të një skripti PHP me Nginx. Pse matje në programim?

Nëse keni një projekt të madh ose një server me burime të kufizuara, atëherë shpesh do të shihni gabimin "504 Gateway Time-out".

Ju mund të ndiqni hapat e mëposhtëm për të rritur vlerën e afatit. Në PHP, parazgjedhja është 30 sekonda.

Ndryshimet në php.ini

Nëse dëshironi të ndryshoni kohën maksimale të ekzekutimit për skriptet PHP nga 30 sekonda (e parazgjedhur) në 300 sekonda.

Nano /etc/php5/fpm/php.ini

Instalo...

Koha_maksimumi i_ekzekutimit = 300

Në Apache PHP që ekzekutohet si modul, këto ndryshime do të jenë të mjaftueshme. Por në rastin tonë, ne duhet të bëjmë ndryshime në disa vende të tjera.

Ndryshimet në PHP-FPM

Kjo është e nevojshme nëse e keni hequr më herët parametrin request_terminate_timeout. Si parazgjedhje komentohet dhe merr vlerën max_execution_time të gjetur nga php.ini

Po hapet...

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

Po instalohet...

Request_terminate_timeout = 300

Ndryshimet në konfigurimin e Nginx

Rritja e afatit kohor për një domen shembull.com

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

Nëse dëshironi të rrisni afatin kohor për të gjitha domenet në serverin tuaj, mund të modifikoni skedarin kryesor të konfigurimit nginx.conf:

Nano /etc/nginx/nginx.conf

Shtoni parametrin e mëposhtëm në seksionin http(..).

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

A keni marrë ndonjëherë një gabim Gabim fatal: Është tejkaluar koha maksimale e ekzekutimit prej 30 sekondash në WordPress? Ky gabim do të thotë se skripti PHP i ekzekutuar kërkonte më shumë kohë për t'u përfunduar sesa kufiri i caktuar dhe skripti u ndal për shkak të kësaj. Ky udhëzues do t'ju ndihmojë të kuptoni pyetjen se si të rrisni kohën e ekzekutimit të skriptit në PHP dhe në këtë mënyrë të zgjidhni gabimin që ka lindur.

Përpara se të filloni këtë udhëzues, kontrolloni që keni:

  • Qasja në panelin administrativ të faqes suaj të WordPress (anglisht)

Hapi 1 – Instaloni shtojcën e tejkalimit të kohës maksimale të ekzekutimit të WP

WordPress ka një komunitet të madh, kështu që ka një shtojcë të dobishme ose disa për çdo funksionalitet që ju nevojitet. Situata jonë nuk bën përjashtim; për të rritur kohën e ekzekutimit të skriptit në PHP, mund të përdorni shtojcën WP Maximum Execution Time Exceeded dhe të rregulloni gabimin që ka lindur. Mund të gjenden udhëzime të hollësishme se si të instaloni shtojcën WordPress.

Kjo shtojcë bën ndryshime në skedarin .htaccess dhe rrit kufijtë kohorë të ekzekutimit të skriptit. Pas instalimit të plugin-it, nuk keni nevojë të bëni asgjë tjetër, gjithçka është bërë tashmë nga plugin-i. Shtojca nuk ka një faqe cilësimesh, kështu që nëse dëshironi të ktheni cilësimet e mëparshme, thjesht fshini shtesën dhe .htaccess do të kthehet në formën e tij origjinale.

Hapi 2 – Redaktimi manual i skedarit .htaccess

Nëse tashmë keni instaluar shumë shtojca dhe nuk dëshironi të përdorni një shtesë ose thjesht nuk ju ndihmoi të hiqni qafe gabimin, atëherë mund të bëni ndryshime në skedarin .htaccess manualisht për të rritur ekzekutimin maksimal. afat kohor. Mënyra më e lehtë për t'u përdorur Menaxheri i skedarëve të vendosura në panelin tuaj të kontrollit. Nëse nuk dini si ta gjeni skedarin .htaccess, ju lutemi referojuni udhëzimeve të hollësishme. Do t'ju duhet të vendosni kodin e mëposhtëm në skedarin .htaccess në fund dhe ta ruani duke klikuar Ruaj:

Php_value max_execution_time 60

Kjo do të rrisë vlerën e parametrit max_execution_time dhe, për PHP, kohën e ekzekutimit të skriptit në 60 sekonda (1 minutë). Nëse akoma e merrni këtë gabim, atëherë provoni ta rrisni edhe më shumë - deri në 120/180 sekonda e kështu me radhë.

Hapi 3 – Ndryshimi i vlerës max_execution_time në cPanel

Nëse jeni duke përdorur cPanel, atëherë mund të rrisni parametrin max_execution_time direkt përmes cPanel. Shkoni te seksioni Zgjidhni Versionin PHP (Zgjidhni versionin PHP).

Rritni vlerën që shihni në rresht koha_maksimumi i_ekzekutimit. Zakonisht, është vendosur në 30 sekonda si parazgjedhje, në shembullin tonë e kemi rritur atë në 60 sekonda. Klikoni Aplikoni(Aplikoni) për të ruajtur ndryshimet.

Kjo është e gjitha, ju keni rritur me sukses vlerën e parametrit kufi koha_maksimumi i_ekzekutimit për faqen tuaj të internetit.

konkluzioni

Duke ndjekur këtë udhëzues, ju keni mësuar 3 mënyra për të rritur koha_maksimumi i_ekzekutimit për WordPress, për të ndryshuar kohën e ekzekutimit të skriptit në PHP dhe për të hequr qafe gabimin Gabim fatal: Koha maksimale e ekzekutimit është tejkaluar. Nëse jeni duke përdorur host të përbashkët dhe asnjë nga zgjidhjet nuk funksionon për ju, atëherë kontaktoni ofruesin tuaj të pritjes për të kontrolluar se cilat janë kufizimet tuaja aktuale dhe nëse ato mund të ndryshohen fare.

Nëse jeni duke zhvilluar një projekt të madh, atëherë mund të duhet shumë kohë për të përpunuar disa të dhëna. Faqe të ndryshme pritëse kanë kufijtë e tyre për veprime të tilla, dhe nëse nevoja për të rritur këtë kohë ju solli këtu, atëherë unë do t'ju tregoj në detaje se si mund të bëhet kjo.

Që të kuptoni se për çfarë po flasim, unë do të jap një shembull të vogël. Nëse shkoni përtej kornizës kohore të caktuar, mund të merrni gabimin e mëposhtëm:

Gabim fatal: Koha maksimale e ekzekutimit prej 30 sekondash është tejkaluar në site.php në linjën 19

Unë do t'ju tregoj për 4 mënyra për ta hequr qafe atë.

Por ia vlen të fillohet me faktin se në secilin rast individual, të gjitha metodat e listuara mund të mos funksionojnë, pasi disa ofrues pritës ndalojnë vetë ndryshimin e këtij parametri.

Rritja e kohës së ekzekutimit të një skripti PHP përmes skedarit të konfigurimit php.ini

Si mënyra e parë për të rritur kohën e ekzekutimit të skriptit, ne do të përdorim skedarin e konfigurimit php.ini.

Për të zbuluar saktësisht se ku ndodhet ky skedar, lexoni.

Hapeni atë në një mënyrë të përshtatshme për ju dhe futeni në fund:

Koha_maksimumi i ekzekutimit = 300;

ku " 300 "do të thotë 300 sekonda (ndryshoni në tuajin). Ky skedar, për fat të keq, nuk është i disponueshëm për modifikim nga përdoruesit në të gjitha faqet e pritjes.

Rritja e kohës së ekzekutimit të një skripti PHP përmes funksionit të integruar "ini_set"

Metoda e dytë bazohet në përdorimin e funksionit " ini_set" Ju e futni atë direkt në vetë skedarin e skriptit, mundësisht në krye. Shembull:

Këtu kuptimi është " 300 “Gjithashtu ndryshoni në atë që ju nevojitet në sekonda. shënim që kur përdorni PHP në modalitetin e sigurt, ky funksion nuk do të jetë i disponueshëm.

Rritja e kohës së ekzekutimit të një skripti PHP përmes funksionit të integruar "set_time_limit"

Metoda e tretë, ndoshta një nga më të njohurat, është përdorimi i " cakto_kohën_kufizimin» për të ndryshuar kohën e ekzekutimit të skriptit. Përdoret gjithashtu drejtpërdrejt në vetë skedarin PHP. Shembull:

ketu" 300 "Ti ndryshoni gjithashtu në vlerën që ju nevojitet. Këshillohet që të futni kodin në krye.

Rritja e kohës së ekzekutimit të një skripti PHP përmes skedarit .htaccess

Opsioni i fundit është të redaktoni skedarin .htaccess, i cili ndodhet në rrënjën e faqes tuaj (nëse nuk ekziston, krijoni atë).

Në krye të këtij skedari ngjitni:

Php_value max_execution_time 300

kuptimi " 300 “Edhe ju e ndryshoni në tuajën.

shënim, që në të gjitha rastet koha e ekzekutimit të skriptit tregohet në sekonda. Për më tepër, vlera e parametrit në të gjitha metodat mund të marrë " 0 ", që do të thotë kohë e pakufizuar e ekzekutimit.

Si mund të zbuloj se sa kohë është caktuar për të ekzekutuar një skript PHP?

Pasi të keni provuar të ndryshoni kohën e ekzekutimit të skenarit duke përdorur një nga metodat, duhet të zbuloni nëse keni pasur vërtet sukses.

Për ta bërë këtë, krijoni një skedar PHP në rrënjën e faqes tuaj, ku do të jepni vlerën e kohës së caktuar:

Nëse koha është e barabartë me atë që treguat, urime, e keni arritur qëllimin tuaj të dëshiruar. Përndryshe, lexoni përsëri artikullin, shkruani në komente për problemin tuaj ose përcillni atë te ofruesi juaj i pritjes.

Nëse jeni duke zhvilluar një projekt të madh, atëherë mund të duhet shumë kohë për të përpunuar disa të dhëna. Faqe të ndryshme pritëse kanë kufijtë e tyre për veprime të tilla, dhe nëse nevoja për të rritur këtë kohë ju solli këtu, atëherë unë do t'ju tregoj në detaje se si mund të bëhet kjo.

Që të kuptoni se për çfarë po flasim, unë do të jap një shembull të vogël. Nëse shkoni përtej kornizës kohore të caktuar, mund të merrni gabimin e mëposhtëm:

Gabim fatal: Koha maksimale e ekzekutimit prej 30 sekondash është tejkaluar në pandoge_com.php në linjën 19

Unë do t'ju tregoj për 4 mënyra për ta hequr qafe atë.

Por ia vlen të fillohet me faktin se në secilin rast individual, të gjitha metodat e listuara mund të mos funksionojnë, pasi disa ofrues pritës ndalojnë vetë ndryshimin e këtij parametri.

Rritja e kohës së ekzekutimit të një skripti PHP përmes skedarit të konfigurimit php.ini

Si mënyra e parë për të rritur kohën e ekzekutimit të skriptit, ne do të përdorim skedarin e konfigurimit php.ini.

Për të zbuluar saktësisht se ku ndodhet ky skedar, lexoni.

Hapeni atë në një mënyrë të përshtatshme për ju dhe futeni në fund:

Koha_maksimumi i ekzekutimit = 300;

ku " 300 "do të thotë 300 sekonda (ndryshoni në tuajin). Ky skedar, për fat të keq, nuk është i disponueshëm për modifikim nga përdoruesit në të gjitha faqet e pritjes.

Rritja e kohës së ekzekutimit të një skripti PHP përmes funksionit të integruar "ini_set"

Metoda e dytë bazohet në përdorimin e funksionit " ini_set" Ju e futni atë direkt në vetë skedarin e skriptit, mundësisht në krye. Shembull:

Këtu kuptimi është " 300 “Gjithashtu ndryshoni në atë që ju nevojitet në sekonda. shënim që kur përdorni PHP në modalitetin e sigurt, ky funksion nuk do të jetë i disponueshëm.

Rritja e kohës së ekzekutimit të një skripti PHP përmes funksionit të integruar "set_time_limit"

Metoda e tretë, ndoshta një nga më të njohurat, është përdorimi i " cakto_kohën_kufizimin» për të ndryshuar kohën e ekzekutimit të skriptit. Përdoret gjithashtu drejtpërdrejt në vetë skedarin PHP. Shembull:

ketu" 300 "Ti ndryshoni gjithashtu në vlerën që ju nevojitet. Këshillohet që të futni kodin në krye.

Rritja e kohës së ekzekutimit të një skripti PHP përmes skedarit .htaccess

Opsioni i fundit është të redaktoni skedarin .htaccess, i cili ndodhet në rrënjën e faqes tuaj (nëse nuk ekziston, krijoni atë).

Në krye të këtij skedari ngjitni:

Php_value max_execution_time 300

kuptimi " 300 “Edhe ju e ndryshoni në tuajën.

shënim, që në të gjitha rastet koha e ekzekutimit të skriptit tregohet në sekonda. Për më tepër, vlera e parametrit në të gjitha metodat mund të marrë " 0 ", që do të thotë kohë e pakufizuar e ekzekutimit.

Si mund të zbuloj se sa kohë është caktuar për të ekzekutuar një skript PHP?

Pasi të keni provuar të ndryshoni kohën e ekzekutimit të skenarit duke përdorur një nga metodat, duhet të zbuloni nëse keni pasur vërtet sukses.

Për ta bërë këtë, krijoni një skedar PHP në rrënjën e faqes tuaj, ku do të jepni vlerën e kohës së caktuar:

Nëse koha është e barabartë me atë që treguat, urime, e keni arritur qëllimin tuaj të dëshiruar. Përndryshe, lexoni përsëri artikullin, shkruani në komente për problemin tuaj ose përcillni atë te ofruesi juaj i pritjes.

Nga autori: Djali i mikut tim u interesua aq shumë për kiminë sa filloi të bënte "teste" të ndryshme në shtëpi. Pasi llambadari në kuzhinë u bë “viktima” e tyre, babai i tij i kërkoi të ndryshonte preferencat e tij. Si rezultat, fëmija u interesua për statistikat dhe vendosi të llogarisë kohën mesatare të djegies së një ndeshjeje. Rezultati ishte se e gjithë banesa pothuajse mori flakë. Unë e këshillova shkencëtarin e ardhshëm të fillonte programimin dhe të caktonte kohën e ekzekutimit të skriptit PHP.

Pse matje në programim?

Para së gjithash, është më e sigurt se kimia dhe statistikat. Por në fakt, koha e ekzekutimit të kodit të programit është një parametër i rëndësishëm që ndikon në performancën e të gjithë burimit dhe moduleve të tij individuale. Ky parametër është më i kërkuar gjatë optimizimit dhe testimit.

Le të imagjinojmë pak. Le të imagjinojmë se ekziston një lloj motori "i shkruar në shtëpi", të cilin zhvilluesi e "ngarkoi" në një host të mirë dhe lançoi (bazuar në të) faqen e tij të internetit. Por për disa arsye, ngarkimi i burimit në anën e përdoruesit është shumë i ngadaltë.

Në një situatë të tillë, fillimisht të gjitha gungat do të bien mbi hostin. Me shumë mundësi, një programues i zemëruar do të paraqesë një ankesë me shërbimin mbështetës të pritjes. Thonë se kushtet e kontratës nuk po përmbushen, faqja mezi është “e gjallë”...

Por në fakt, problemi i ngarkimit të ngadaltë të faqeve të një burimi dinamik mund të fshihet në vetë motorin. Dhe për të mos u dukur si një "bedel" më vonë, një zhvillues me përvojë mat gjithmonë kohën e ekzekutimit të një skripti PHP përpara se të dorëzojë një projekt.

Karakteristikat e PHP

Unë e kam quajtur gjithmonë një nga gjuhët më të përshtatshme të programimit. Për të gjurmuar kohën e ekzekutimit të kodit, zhvilluesi nuk ka nevojë të shkruajë "talmude" të gjata për të kapur çdo rresht të skenarit. Kjo teknologji zbaton disa mjete të specializuara. Kryesorja është funksioni microtime(). Ai kthen kohën (në milisekonda) që ka kaluar që nga fillimi i vitit 1970. I ashtuquajturi "fillimi i epokës Unix". Nëse ia kaloni parametrin get_as_float funksionit me vlerën true, atëherë ai do të kthejë periudhën kohore në formën e sekondave të plota dhe milisekondave të pjesshme.

Parimi i përdorimit të microtime() është si më poshtë: funksioni thirret në fillim të skriptit dhe në fund të tij. Pastaj vlera fillestare zbritet nga vlera e fundit. Ja se si të llogarisni kohën e ekzekutimit të një skripti:

"; $last=microtime(true); $value=$last-$first; echo "Skripti ekzekutohet në: ".$value; ?>

Ndryshimi i kohës së funksionimit të kodit

Në PHP, vlera e kohës së ekzekutimit të skriptit mund të kufizohet në mënyrë programore (zvogëlohet ose rritet). Për ta bërë këtë, përdoren disa funksione, secila prej të cilave mbishkruan një grup parametrash në skedarin e konfigurimit (php.ini).
Së pari, le të modifikojmë kodin tonë dhe të rrisim numrin e përsëritjeve të ciklit me 20 herë në 200 milionë. Nëse gjithçka është në rregull, atëherë pas ekzekutimit të skriptit duhet të merrni një mesazh gabimi fatal.

Kjo do të thotë që në cilësimet parametri max_execution_time vendoset në vlerën e paracaktuar (30 sekonda). Le të rrisim kohën maksimale të ekzekutimit të një skripti në PHP me 3 herë.

vendos_koha_limit(90);

Tani nuk marrim asnjë mesazh gabimi.