Skriptni bajarish vaqtini oshiring. Nginx bilan PHP skriptining bajarilish vaqti oshdi. Nima uchun dasturlashda o'lchovlar kerak?

Agar sizda katta loyiha yoki cheklangan resurslarga ega serveringiz bo'lsa, siz ko'pincha "504 Gateway Time-out" xatosini ko'rasiz.

Vaqt tugashi qiymatini oshirish uchun quyidagi amallarni bajarishingiz mumkin. PHP da sukut bo'yicha 30 soniya.

Php.ini-dagi o'zgarishlar

Agar siz PHP skriptlari uchun maksimal bajarilish vaqtini 30 soniyadan (standart) 300 soniyagacha o'zgartirmoqchi bo'lsangiz.

Nano /etc/php5/fpm/php.ini

Oʻrnatish...

Maksimal bajarilish_vaqti = 300

Apache'da PHP modul sifatida ishlaydi, bu o'zgarishlar etarli bo'ladi. Ammo bizning holatimizda yana bir nechta joylarda o'zgarishlar qilishimiz kerak.

PHP-FPM-dagi o'zgarishlar

Agar siz oldin request_terminate_timeout parametriga izohni olib tashlagan bo'lsangiz, bu zarur. Odatiy bo'lib, u izohlanadi va php.ini dan topilgan max_execution_time qiymatini oladi

Ochilyapti...

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

Oʻrnatilmoqda...

Request_tugash_vaqt tugashi = 300

Nginx konfiguratsiyasidagi o'zgarishlar

Bitta domen uchun vaqt chegarasini oshirish example.com

Nano /etc/nginx/sites-available/example.com manzili ~ \.php$ (o'z ichiga /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_read_timeout 300; }

Agar siz serveringizdagi barcha domenlar uchun vaqt chegarasini oshirmoqchi bo'lsangiz, asosiy nginx.conf konfiguratsiya faylini tahrirlashingiz mumkin:

Nano /etc/nginx/nginx.conf

http(..) bo'limiga quyidagi parametrni qo'shing

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

Hech qachon xatolik yuz berganmisiz Fatal xato: maksimal bajarish vaqti 30 soniyadan oshib ketdi WordPress-da? Bu xato ishlayotgan PHP skriptini bajarish uchun belgilangan chegaradan ko‘proq vaqt talab qilinganligini va shu sababli skript to‘xtatilganligini bildiradi. Ushbu qo'llanma PHP da skriptni bajarish vaqtini qanday oshirish va shu bilan yuzaga kelgan xatoni hal qilish haqidagi savolni tushunishga yordam beradi.

Ushbu qo'llanmani boshlashdan oldin sizda borligini tekshiring:

  • WordPress saytingizning ma'muriy konsoliga kirish (ingliz tili)

1-qadam - WP maksimal bajarilish vaqti oshib ketgan plaginni o'rnating

WordPress juda katta hamjamiyatga ega, shuning uchun sizga kerak bo'lgan har bir funksiya uchun qulay plagin yoki bir nechta mavjud. Bizning vaziyatimiz bundan mustasno emas, PHP-da skriptni bajarish vaqtini oshirish uchun siz WP Maximum Execution Time Exceeded plaginidan foydalanishingiz va yuzaga kelgan xatoni tuzatishingiz mumkin. WordPress plaginini o'rnatish bo'yicha batafsil ko'rsatmalarni topishingiz mumkin.

Ushbu plagin .htaccess fayliga o'zgartirishlar kiritadi va skriptni bajarish vaqtini oshiradi. Plaginni o'rnatganingizdan so'ng, siz boshqa hech narsa qilishingiz shart emas, hamma narsa plagin tomonidan allaqachon bajarilgan. Plaginda sozlamalar sahifasi yo'q, shuning uchun oldingi sozlamalarni qaytarishni istasangiz, shunchaki plaginni o'chiring va .htaccess asl shakliga qaytariladi.

2-qadam - .htaccess faylini qo'lda tahrirlash

Agar sizda allaqachon ko'plab plaginlar o'rnatilgan bo'lsa va siz qo'shimchasini ishlatmoqchi bo'lmasangiz yoki bu xatolikdan xalos bo'lishga yordam bermagan bo'lsa, maksimal bajarilishini oshirish uchun .htaccess fayliga qo'lda o'zgartirishlar kiritishingiz mumkin. vaqt chegarasi. Foydalanishning eng oson usuli Fayl menejeri Boshqarish panelingizda joylashgan. Agar siz .htaccess faylini qanday topishni bilmasangiz, batafsil ko'rsatmalarga qarang. Pastki qismidagi .htaccess fayliga quyidagi kodni kiritishingiz va uni bosish orqali saqlashingiz kerak bo'ladi Saqlash:

Php_value max_execution_time 60

Bu max_execution_time parametrining qiymatini va PHP uchun skriptni bajarish vaqtini 60 soniyagacha (1 daqiqa) oshiradi. Agar siz hali ham bu xatoga duch kelsangiz, uni yanada ko'proq oshirishga harakat qiling - 120/180 soniyagacha va hokazo.

3-qadam - cPanel-da max_execution_time qiymatini o'zgartirish

Agar siz cPanel-dan foydalanayotgan bo'lsangiz, u holda max_execution_time parametrini to'g'ridan-to'g'ri cPanel orqali oshirishingiz mumkin. Bo'limga o'ting PHP versiyasini tanlang (PHP versiyasini tanlang).

Satrda ko'rgan qiymatni oshiring maksimal_bajarish_vaqti. Odatda, u sukut bo'yicha 30 soniyaga o'rnatiladi, bizning misolimizda biz uni 60 soniyagacha oshirdik. bosing Murojaat qiling O'zgarishlarni saqlash uchun (Ilova).

Hammasi shu, siz limit parametr qiymatini muvaffaqiyatli oshirdingiz maksimal_bajarish_vaqti veb-saytingiz uchun.

Xulosa

Ushbu qo'llanmaga rioya qilish orqali siz oshirishning 3 usulini o'rgandingiz maksimal_bajarish_vaqti WordPress uchun PHP da skriptni bajarish vaqtini o'zgartirish va xatolikdan xalos bo'lish Muhim xato: maksimal bajarish vaqti oshib ketdi. Agar siz umumiy hostingdan foydalanayotgan bo'lsangiz va yechimlarning hech biri siz uchun ishlamasa, sizning haqiqiy cheklovlaringiz nima ekanligini va ularni umuman o'zgartirish mumkinligini tekshirish uchun hosting provayderingizga murojaat qiling.

Agar siz katta loyihani ishlab chiqayotgan bo'lsangiz, unda ba'zi ma'lumotlarni qayta ishlash ko'p vaqt talab qilishi mumkin. Turli xosting saytlari bunday harakatlar bo'yicha o'z chegaralariga ega va agar bu vaqtni ko'paytirish zarurati sizni bu erga olib kelgan bo'lsa, men buni qanday qilish mumkinligini batafsil aytib beraman.

Nima haqida gapirayotganimizni tushunishingiz uchun men kichik bir misol keltiraman. Belgilangan vaqt oralig'idan oshib ketsangiz, quyidagi xatolikni olishingiz mumkin:

Muhim xato: 19-qatorda site.php da maksimal bajarish vaqti 30 soniyadan oshib ketdi.

Undan qutulishning 4 ta usuli haqida aytib beraman.

Biroq, har bir alohida holatda, sanab o'tilgan usullarning barchasi ishlamasligi mumkinligidan boshlash kerak, chunki ba'zi hosting provayderlari ushbu parametrni o'zlari o'zgartirishni taqiqlaydi.

Php.ini konfiguratsiya fayli orqali PHP skriptining bajarilish vaqtini oshirish

Skriptni bajarish vaqtini oshirishning birinchi usuli sifatida biz konfiguratsiya faylidan foydalanamiz php.ini.

Ushbu faylning aniq qaerda joylashganligini bilish uchun o'qing.

Uni o'zingiz uchun qulay tarzda oching va eng pastki qismiga joylashtiring:

Maksimal bajarilish_vaqti = 300;

Qayerda" 300 "300 soniyani bildiradi (siznikiga o'zgartiring). Ushbu fayl, afsuski, barcha hosting saytlarida foydalanuvchilar tomonidan tahrirlash uchun mavjud emas.

O‘rnatilgan “ini_set” funksiyasi orqali PHP skriptining bajarilish vaqtini oshirish

Ikkinchi usul funktsiyadan foydalanishga asoslangan " ini_set" Siz uni to'g'ridan-to'g'ri skript faylining o'ziga, eng yuqori qismiga kiritasiz. Misol:

Bu erda ma'no " 300 “Siz ham bir necha soniya ichida kerakli narsani o'zgartirasiz. Eslatma PHP xavfsiz rejimda foydalanilganda, bu funksiya mavjud bo'lmaydi.

PHP skriptining ishlash vaqtini o'rnatilgan "to'siq_vaqt_chegarasi" funksiyasi orqali oshirish

Uchinchi usul, ehtimol, eng mashhurlaridan biri, " vaqt_chegarasi» skriptning bajarilish vaqtini o'zgartirish uchun. To'g'ridan-to'g'ri PHP faylining o'zida ham qo'llaniladi. Misol:

Bu yerga " 300 "siz ham kerakli qiymatga o'zgartirasiz. Kodni eng yuqori qismida kiritish tavsiya etiladi.

.htaccess fayli orqali PHP skriptining bajarilish vaqtini oshirish

Oxirgi variant - faylni tahrirlash .htaccess, saytingizning ildizida joylashgan (agar u mavjud bo'lmasa, uni yarating).

Ushbu faylning eng yuqori qismiga qo'ying:

Php_value max_execution_time 300

Ma'nosi " 300 "Siz ham uni o'zingiznikiga o'zgartirasiz.

Eslatma, barcha holatlarda skriptni bajarish vaqti soniyalarda ko'rsatilgan. Bundan tashqari, barcha usullarda parametr qiymatini olishi mumkin " 0 ", bu cheksiz bajarish vaqtini bildiradi.

PHP skriptini bajarish uchun qancha vaqt ajratilganligini qanday aniqlash mumkin?

Usullardan biri yordamida skriptning bajarilish vaqtini o'zgartirishga urinib ko'rganingizdan so'ng, siz haqiqatan ham muvaffaqiyatga erishganingizni bilib olishingiz kerak.

Buning uchun saytingizning ildizida PHP faylini yarating, u yerda belgilangan vaqt qiymatini chiqarasiz:

Agar vaqt siz ko'rsatgan vaqtga teng bo'lsa, tabriklaymiz, siz o'zingiz xohlagan maqsadingizga erishdingiz. Aks holda, maqolani qayta o'qing, muammoingiz haqida sharhlarda yozing yoki uni hosting provayderingizga yuboring.

Agar siz katta loyihani ishlab chiqayotgan bo'lsangiz, unda ba'zi ma'lumotlarni qayta ishlash ko'p vaqt talab qilishi mumkin. Turli xosting saytlari bunday harakatlar bo'yicha o'z chegaralariga ega va agar bu vaqtni ko'paytirish zarurati sizni bu erga olib kelgan bo'lsa, men buni qanday qilish mumkinligini batafsil aytib beraman.

Nima haqida gapirayotganimizni tushunishingiz uchun men kichik bir misol keltiraman. Belgilangan vaqt oralig'idan oshib ketsangiz, quyidagi xatolikni olishingiz mumkin:

Muhim xato: 19-qatordagi pandoge_com.php da maksimal bajarish vaqti 30 soniyadan oshib ketdi.

Undan qutulishning 4 ta usuli haqida aytib beraman.

Biroq, har bir alohida holatda, sanab o'tilgan usullarning barchasi ishlamasligi mumkinligidan boshlash kerak, chunki ba'zi hosting provayderlari ushbu parametrni o'zlari o'zgartirishni taqiqlaydi.

Php.ini konfiguratsiya fayli orqali PHP skriptining bajarilish vaqtini oshirish

Skriptni bajarish vaqtini oshirishning birinchi usuli sifatida biz konfiguratsiya faylidan foydalanamiz php.ini.

Ushbu faylning aniq qaerda joylashganligini bilish uchun o'qing.

Uni o'zingiz uchun qulay tarzda oching va eng pastki qismiga joylashtiring:

Maksimal bajarilish_vaqti = 300;

Qayerda" 300 "300 soniyani bildiradi (siznikiga o'zgartiring). Ushbu fayl, afsuski, barcha hosting saytlarida foydalanuvchilar tomonidan tahrirlash uchun mavjud emas.

O‘rnatilgan “ini_set” funksiyasi orqali PHP skriptining bajarilish vaqtini oshirish

Ikkinchi usul funktsiyadan foydalanishga asoslangan " ini_set" Siz uni to'g'ridan-to'g'ri skript faylining o'ziga, eng yuqori qismiga kiritasiz. Misol:

Bu erda ma'no " 300 “Siz ham bir necha soniya ichida kerakli narsani o'zgartirasiz. Eslatma PHP xavfsiz rejimda foydalanilganda, bu funksiya mavjud bo'lmaydi.

PHP skriptining ishlash vaqtini o'rnatilgan "to'siq_vaqt_chegarasi" funksiyasi orqali oshirish

Uchinchi usul, ehtimol, eng mashhurlaridan biri, " vaqt_chegarasi» skriptning bajarilish vaqtini o'zgartirish uchun. To'g'ridan-to'g'ri PHP faylining o'zida ham qo'llaniladi. Misol:

Bu yerga " 300 "siz ham kerakli qiymatga o'zgartirasiz. Kodni eng yuqori qismida kiritish tavsiya etiladi.

.htaccess fayli orqali PHP skriptining bajarilish vaqtini oshirish

Oxirgi variant - faylni tahrirlash .htaccess, saytingizning ildizida joylashgan (agar u mavjud bo'lmasa, uni yarating).

Ushbu faylning eng yuqori qismiga qo'ying:

Php_value max_execution_time 300

Ma'nosi " 300 "Siz ham uni o'zingiznikiga o'zgartirasiz.

Eslatma, barcha holatlarda skriptni bajarish vaqti soniyalarda ko'rsatilgan. Bundan tashqari, barcha usullarda parametr qiymatini olishi mumkin " 0 ", bu cheksiz bajarish vaqtini bildiradi.

PHP skriptini bajarish uchun qancha vaqt ajratilganligini qanday aniqlash mumkin?

Usullardan biri yordamida skriptning bajarilish vaqtini o'zgartirishga urinib ko'rganingizdan so'ng, siz haqiqatan ham muvaffaqiyatga erishganingizni bilib olishingiz kerak.

Buning uchun saytingizning ildizida PHP faylini yarating, u yerda belgilangan vaqt qiymatini chiqarasiz:

Agar vaqt siz ko'rsatgan vaqtga teng bo'lsa, tabriklaymiz, siz o'zingiz xohlagan maqsadingizga erishdingiz. Aks holda, maqolani qayta o'qing, muammoingiz haqida sharhlarda yozing yoki uni hosting provayderingizga yuboring.

Muallifdan: do'stimning o'g'li kimyoga shunchalik qiziqib qoldiki, u uyda turli "testlar" o'tkaza boshladi. Oshxonadagi qandil ularning "qurboniga" aylangandan so'ng, otasi undan o'z afzalliklarini o'zgartirishni so'radi. Natijada, bola statistikaga qiziqib qoldi va bitta gugurtning o'rtacha yonish vaqtini hisoblashga qaror qildi. Natijada butun kvartira deyarli yonib ketdi. Men bo'lajak olimga dasturlashni boshlashni va PHP skriptining bajarilish vaqtini belgilashni maslahat berdim.

Nima uchun dasturlashda o'lchovlar kerak?

Birinchidan, u kimyo va statistikadan xavfsizroq. Ammo, aslida, dastur kodini bajarish vaqti butun resurs va uning alohida modullarining ishlashiga ta'sir qiluvchi muhim parametrdir. Optimallashtirish va sinovdan o'tkazishda ushbu parametr ko'proq talab qilinadi.

Keling, bir oz tasavvur qilaylik. Tasavvur qilaylik, ishlab chiquvchi yaxshi xostingga "yuklagan" va o'z veb-saytini ishga tushirgan (uning asosida) "uyda yozilgan" dvigatel mavjud. Lekin negadir resursni foydalanuvchi tomonida yuklash juda sekin.

Bunday vaziyatda dastlab barcha zarbalar mezbonga tushadi. Katta ehtimol bilan, g'azablangan dasturchi hostingni qo'llab-quvvatlash xizmatiga shikoyat qiladi. Aytishlaricha, shartnoma shartlari bajarilmayapti, sayt zo‘rg‘a “jonli”...

Ammo, aslida, dinamik resurs sahifalarini sekin yuklash muammosi dvigatelning o'zida yashiringan bo'lishi mumkin. Keyinchalik "dummi"ga o'xshamaslik uchun, tajribali dasturchi loyihani yetkazib berishdan oldin har doim PHP skriptining bajarilish vaqtini o'lchaydi.

PHP xususiyatlari

Men uni har doim eng qulay dasturlash tillaridan biri deb ataganman. Kodning ishlash vaqtini kuzatish uchun dasturchi skriptning har bir satrini kesish uchun uzoq "talmudlar" yozishi shart emas. Ushbu texnologiya bir nechta maxsus vositalarni amalga oshiradi. Asosiysi microtime() funksiyasi. U 1970-yil boshidan buyon oʻtgan vaqtni (millisekundlarda) qaytaradi. “Unix davrining boshlanishi” deb ataladigan vaqt. Agar siz get_as_float parametrini true qiymatiga ega funktsiyaga o'tkazsangiz, u vaqt davrini butun soniya va kasr millisekundlar ko'rinishida qaytaradi.

Microtime() dan foydalanish printsipi quyidagicha: funksiya skript boshida va uning oxirida chaqiriladi. Keyin dastlabki qiymat oxirgi qiymatdan chiqariladi. Skriptning bajarilish vaqtini qanday hisoblash mumkin:

"; $last=microtime(true); $value=$last-$first; echo "Skript bajarilgan: ".$value; ?>

Kodning ishlash vaqtini o'zgartirish

PHP da skriptning ishlash vaqtining qiymati dasturiy jihatdan cheklanishi mumkin (kamaytirish yoki oshirish). Buning uchun bir nechta funksiyalar qo'llaniladi, ularning har biri konfiguratsiya faylida (php.ini) parametrlar to'plamini qayta yozadi.
Birinchidan, kodimizni o'zgartiramiz va tsikl takrorlash sonini 20 barobarga oshirib, 200 millionga yetkazamiz. Agar hamma narsa yaxshi bo'lsa, skriptni ishga tushirgandan so'ng siz halokatli xato xabarini olishingiz kerak.

Bu shuni anglatadiki, sozlamalarda max_execution_time parametri standart qiymatga (30 soniya) o'rnatiladi. PHP da skriptning maksimal bajarilish vaqtini 3 barobarga oshiramiz.

belgilangan_vaqt_chegarasi(90);

Endi biz hech qanday xato xabarlarini olmaymiz.