Internet Derazalar Android
Kengaytirmoq

PHP skriptning ijro vaqtini o'lchaydi. Ssenariy vaqtini PHP-da qanday o'lchash va nega sizga kerak? Bajarish vaqtining amaliy qiymati

Xayrli kun, hamkasblar! Shum

Bugun men fanga PHP skriptini ijro etish vaqti va uning ta'rifi sifatida ta'sir o'tkazishga qaror qildim.

Men bu zarurat har kuni paydo bo'ladi, ammo vaqti-vaqti bilan PHP yozuvi vaqtini olishingiz kerak bo'lgan holatlar mavjudligini aytmayman.

Ayniqsa, ko'pincha bunday kasbda ishlab chiquvchilar tomonidan ishlab chiqilgan ishlanuvchilar va mavjud algoritmlarni optimallashtirish, skriptning yakuniy versiyasini tanlashda skriptning asosiy omili bo'lganida, mavjud algoritmlarni optimallashtirishga olib kelishi mumkin.

Xo'sh, ba'zida raqamlar soni kodonlashtirish uchun qancha vaqt davomida ma'lum bir harakatlar uchun qancha vaqt talab qilinishini bilib olishni istagan menejerlar va mijozlarni talab qiladi.

Shuning uchun men ushbu qisqa yozuvni yozishga qaror qildim, bunda protsedurani xuddi shunday vaziyatda yo'lga chiqishga qaror qildim.

Dastlab biz PHP skriptining ijro vaqtini aniqlash uchun algoritmni ko'rib chiqamiz, keyin men u bilan amalga oshiriladigan kodni beraman.

PHP-ni bajarish paytida skript - ta'rif algoritmi

Bizning harakatlarimiz tartibi juda oddiy:

  1. biz skriptda belgilangan harakatlar qilishdan oldin PHP kodini PHP kodini aniqlaymiz;
  2. ssenariy bajarilgandan so'ng, biz yana server vaqtini bilib olamiz;
  3. pHP vaqtini hisoblang Script bajarilishi va uning ishga tushirilishi o'rtasidagi farqni hisoblang.

Natijada qiymat shunchaki optimallashtirish va boshqa harakatlar hisobga olinishi mumkin bo'lgan PHP skriptining ijro muddati bo'ladi.

PHP skriptning ishlash vaqti - algoritmni amalga oshirish

PHP kodida joriy vaqtni chiqarish uchun PHP funktsiyasidan foydalanishga qaror qildim mikrotim ()MicroSeconds bilan UNIX formatidagi joriy vaqt shamg'ini qaytaradi.

Nega bunday aniqlik?

Keyin, skriptlarni ijro etishda ozgina o'zgarishlarni qo'lga kiritish uchun, chunki Ba'zan sekundlar halokatli bo'lishi va sekin kodni keng miqyosda ishlatishda katta yo'qotishlarga olib kelishi mumkin.

Xo'sh, plyus hisobini hisoblash paytida hisobni hisoblashda hisoblashning aniqligiga ta'sir qiladi.

Uning nazariy narxesni namoyish etish uchun men oddiy tsiklning 30 000 000 ta iteratsiyalari bilan bo'sh videoning ishlash vaqtini hisoblab chiqmagan oddiy sketptorni yozdim (ravshanlikka ko'proq pul olishga qaror qildim):

PHP mikrotim () funktsiyasi faqat bitta parametr mavjud get_as_flout., qaysi qiymatlarni ko'rsatganda to'g'ri. Siz joriy PHP vaqtini mikrosekundlar aniqligi bilan UNIX davridan beri o'tgan soniyalarda olishingiz mumkin.

Menga kerak bo'lganim uchun, u Unix davrining boshidanoq sonining sonidan emas, keyin men ushbu parametrni o'z kodimda ko'rishingiz mumkin bo'lgan ushbu parametrni ishlatganman.

Natijada, funktsiyani ishlatish echo ()Ekranda quyidagi xabar ko'rsatiladi: Skript 1,3156361579895 soniya davomida yakunlandi.

Ushbu usul to'g'ri ishlayotganini aniqlash uchun, men funktsiyadan foydalanib skriptning belgilangan tartib vaqtini o'rnatishga qaror qildim uyqu ()Belgilangan soniya soniga skriptning ijrosini amalga oshiradi.

Natijada, keyingi dizayn xabarni qaytarib berdi Script 2,0000510215759 soniya davomida yakunlandi:

Mikroskopik aktsiyalarning belgilangan kechikishidan tashqari, kod tuzilmalarini chaqirish va ularni amalga oshirish natijalarini server bezlari bilan qayta yopib qo'yish vaqtida yoki ularni qayta yopilishi mumkin.

Agar ular siz hali ham sizni bezovta qilsalar, siz xakerdan yuzdan yoki minglab yaxlitlik shaklida, uni keyingi () bilan PHP funktsiyasi bilan ishlatishingiz mumkin:

Dumaloq (mikrotame (haqiqiy) - $ start, 2);

Ushbu misol uchun ushbu misolning ijrosi natijasida 2 soniya davomida eng nozik 2 soniyadagi qiymat bo'ladi. Bu eng nozik perfektsionerlarni tashkil qiladi

Bugungi kunda PHP yozuvini qanday aniqlash to'g'risida ma'lumotga ko'ra, yakunlanadi.

Fikrlaringizni sharhlar bilan yozing va ommaviy axborot vositalarida ommaviy axborot xabarlarida qiziqtirgan savollarni berish.

Agar siz katta loyihani ishlab chiqsangiz, unda ba'zi ma'lumotlarni qayta ishlashda katta vaqt kerak bo'lishi mumkin. Turli xil xostinglarda bunday harakatlar uchun cheklovlar mavjud va agar siz ushbu vaqtni ko'paytirishingiz kerak bo'lsa, unda men sizga qanday qilib amalga oshirilishi mumkinligini batafsil aytib beraman.

Siz nima haqida gapirayotganimizni tushunish uchun men kichik bir misol keltiraman. Ko'rsatilgan vaqt ramkasidan chiqqaningizda, keyingi xato turini olishingiz mumkin:

Fatal xato: 30 sekunddan yuqori bajarish muddati Sayt.Php 19-qatorda

Men undan qutulishning 4 ta usuli aytaman.

Ammo har bir alohida holatda ro'yxatga olingan usullar ishlamasligi mumkinligidan boshlanishi kerak, chunki ba'zi xosting provayderlari taqiqlanganidek, ushbu parametrni o'z-o'zidan o'zgartirish orqali taqiqlanadi.

Php.ini konfiguratsiya fayli orqali PHP yozuv vaqtini oshirish

Skriptning amal qilish muddatini birinchi marta oshirish uchun biz konfiguratsiya faylidan foydalanamiz php.ini..

Ushbu fayl qayerdaligini aniq topish uchun o'qing.

Uni sizga qulay tarzda oching va uni pastki qismida joylashtiring:

Maks_Excection_Time \u003d 300;

Qayerda " 300 "300 soniya yoki sizning o'zgartirishingizni anglatadi. Ushbu fayl afsuski, barcha xosting foydalanuvchilarni tahrirlash uchun mavjud emas.

Ichki "INI_Set" funktsiyasi orqali PHP skriptni bajarish vaqtini oshirish

Ikkinchi usul funktsiyadan foydalanishga asoslangan " ini_set." Siz uni skript faylining o'zida, yaxshisi yuqoriga qo'yasiz. Misol:

Mana ma'nosi " 300 »Siz shuningdek, keraklilarni soniyalarda almashtirasiz. EslatmaXavfsiz rejimda PHP-dan foydalanish bilan ushbu funktsiya mavjud bo'lmaydi.

Ichki "set_time_limit" funktsiyasi orqali PHP skriptni o'tkazish vaqtini oshirish

Uchinchi usul, ehtimol, eng mashhurlardan biri - funktsiyani ishlatish " set_im_limit.»Skriptning bajarilish vaqtini o'zgartirish uchun. Shuningdek, PHP faylida to'g'ridan-to'g'ri ishlatiladi. Misol:

Bu yerda " 300 »Siz ham kerakli qiymatingizni o'zgartirasiz. Kodni qo'shish yaxshidir.

Filial.htacess orqali PHP yozuv vaqtini oshirish

So'nggi variant - faylni tahrirlash .htacccess.Saytingizning ildizida joylashgan (agar hech kim bo'lmasa - uni yarating).

Ushbu faylning eng yuqori qismida:

Php_Value max_exice_tion 300.

" 300 "Siz ham o'zingni o'zgartirasiz.

EslatmaBarcha holatlarda skriptning ijro muddati bir necha soniya ichida ko'rsatilgan. Bundan tashqari, barcha usullar parametrining qiymati qabul qilinishi mumkin " 0 ", Bu cheksiz bajarilish vaqtini anglatadi.

PHP yozuvini bajarish uchun qancha vaqt ajratilganligini qanday aniqlash mumkin?

Bir usuldan keyin siz skriptni ijro etish vaqtini o'zgartirishga harakat qilganingizdan so'ng, siz haqiqatan ham sodir bo'lganligini bilishingiz kerak.

Buning uchun Saytingizning ildizida PHP faylini yarating, qaerda belgilangan vaqtning qiymatini chiqaradi:

Agar vaqt siz ko'rsatgan narsaga teng bo'lsa - sizni tabriklaymiz, siz kerakli maqsadga erishdingiz. Aks holda, maqolani yana o'qing, muammoning sharhlarida yozing yoki uni xosting provayderingizga yuboring.

Skriptni takrorlash maqsadida sahifani yoki uning elementi umuman saytning xavfsiz va ishonchli kodini yaratish uchun vaqtni aniqlash maqsadida masala.

Buning uchun uchta fundamental xilma-xil variant mavjud: butun sahifani tashkil etish vaqti, sahifaning yangilanish vaqti va ijro muddati cheklanmagan, shu jumladan mehmonning sessiyasining sessiyasining faktlari cheklanmagan.

Scriptni bajarish vaqti

PHP-da skriptni ijro qilish vaqti birinchi dasturlash tillarida qilinganidek sodda. Dastlabki kodning oxirida va oxirida vaqtinchalik yorliqlarni aniqlash orqali ushbu qiymatlar o'rtasidagi farqni aniq va dastlabki belgilar orasidagi barcha sintaktik tuzilmalarning qatlini aniq aniqlashingiz mumkin.

Oddiy ssenariy: tsikli bajarilish vaqtini aniqlash misolidir.

PHP ishlab chiqaruvchining ikkita funktsiyasini taqdim etadi: Vaqtinchalik teglarni shakllantirish uchun ishlatilishi mumkin bo'lgan mikrotim () va vaqt (). Kodni o'rganishni boshlashdan oldin va uning tugashidan oldin ushbu yorliqlarni aniqlash, siz Kod ijrosi bo'yicha o'tkazilgan real vaqtni olish uchun farqni hisoblashingiz mumkin.

Mikrotim () va vaqt () funktsiyalari

Ushbu misolda, tsiklda boshqa bir qator iteratsiyalar qo'llaniladi: 567 yoki 56789. Birinchi holatda tsikl tezroq ishlaydi, ikkinchisida esa o'n marta sekinlashadi.

Mikrotim () funktsiyasi parametrlarsiz ishlatilishi mumkin, keyin uning natijalari bo'shliq tomonidan ajratilgan ikkita raqamdan iborat harflar qatoriga aylanadi. Birinchi raqam - mikrosekundlar soni, ikkinchi raqam UNIX davr boshlanishi bilan tan olingan sanadan o'tgan soniya sonini tashkil qiladi.

Agar mikrotame (haqiqiy) funktsiyasi parametr bilan deb nomlangan bo'lsa va uning qiymati to'g'ri bo'lsa, natijada son, soniya va mikrosekundlar soniga teng bo'ladi. Parametrlarsiz funktsiyadan foydalanib, qo'ng'iroq qilish uchun tengdir: mikrotim (noto'g'ri).

Vaqt () funktsiyasi mikrokondlar bilan ishlamaydi, chunki kichikroq bir qatorga teng ijro etish vaqti yo'q.

Bajarish vaqtining amaliy qiymati

PHP - tez, zamonaviy va funktsional mukammal til. Aksariyat hollarda skriptning ijro davri PHP-da mantiqiy emas. Ammo sahifaning shakllanishi ma'lumotlar bazasidan olingan ma'lumotlar asosida amalga oshirilishi mumkin. Bunday holda, server va boshqa holatlarni qayd etishda ma'lumotni etkazib berishni kechiktirishga qo'shimcha ravishda ma'lumotni kechiktirishga qo'shimcha ravishda ma'lumotni kechiktirishga qo'shimcha ravishda amalga oshirilishi mumkin.

Zamonaviy Internet dasturlash orqali tarqatilgan axborotni qayta ishlash talablari, Internetda turli tarmoq resurslaridan ma'lumotlarni to'plash zarurati hisobga olinadi. Ushbu va shunga o'xshash holatlarda, skriptni ijro qilish vaqti strategik rol o'ynaydi va amaliy ahamiyatga ega.

Xususan, qidiruv dvigatelini ishlab chiqishda ma'lum bir vaqt uchun ularda kiritilgan o'zgarishlar uchun aniq tarmoq manbalarining muntazam ravishda spektrli spektrni ko'rish kerak bo'lishi mumkin. Ammo ba'zi manbalar bo'lishi mumkin:

  • mavjud emas;
  • bloklangan;
  • saqlanishi kerak.

Bunday hollarda skriptingiz kerak bo'lgan voqealarni kutish uchun skript osib qo'yiladi yoki asossiz ravishda uzoq vaqt bo'ladi.

Skriptni bajarish uchun, masalan, 10 soniya, 1 minut. yoki 5 daqiqa, o'z vazifalarini hal qilish uchun zarur bo'lgan barcha olis resurslarni qayta ishlash qoidalariga qat'iy muvofiqligini ta'minlash mumkin.

Skriptni bajarish vaqti va joyi

PHP - server tili, lekin bu holatlarda, skriptlarning ijro muddati faqat server tezligi bilan belgilanishini anglatadi. Faqat cheklangan vazifalar serverni qayta ishlashni talab qiladi. Ma'lumotlar bazasiga yoki skriptdan tarmoqqa kirish server vakolati tashqarisida ishlab chiqarish va qo'shimcha vaqtni olish va kerakli ma'lumotlarni olishni kutadigan qo'shimcha vaqt.

PHP skriptining ishga tushirilishi "AJAX" texnologiyasidan foydalanish mumkin, ya'ni Sayt elementidagi saytga tashrif buyuruvchini bosgandan so'ng amalga oshiriladi. Ushbu sahifa butunlay yangilanmasa, bu oddiy amaliyot, lekin faqat alohida narsa. Qoida tariqasida, bunday echim kerakli ma'lumotlar namunasi bilan bog'liq bo'lishi mumkin. Bu erda har qanday ijro kechikish mehmon uchun juda muhimdir. Agar vaqt kutganidan oshsa, u tezroq va qulay manbaga o'tadi.

Dasturchi qancha vaqt kerakligini taxmin qilishi mumkin va agar skriptlarning ijro muddati maqbul doiraga chiqa boshlasa, u javob o'rniga tashrif buyuruvchiga etarli xabar yuborishi mumkin. Bu resursning sifatini sezilarli darajada yaxshilaydi va yaxshi echimdir.


Ba'zan skriptning bajarilish vaqtini bilish talab qilinadi. Va bu o'rnatilgan holda amalga oshirilishi mumkin PHP. funktsiyalar.

Siz turli xil variantlarni berishingiz mumkin. Nima uchun kimdir kod bajarilgan vaqtni o'rganishi kerak.
Bu boshqa odamlarning funktsiyalari, kutubxonalar, darslar va boshqalarning tezligini tekshirish uchun shaxsiy qiziqish bo'lishi mumkin.
Shunday qilib, uni yanada takomillashtirish uchun skriptlarni ishlab chiqish va bajarilishi tezligini o'lchash.
Tasavvur qiling, siz bir muncha vaqt davomida bajariladigan ba'zi funktsiyani ishlab chiqqansiz va siz uning ish tezligidan qoniqmaysiz.
Va siz uni asta-sekin yaxshilaysiz. Ammo bu yaxshilanishlar ba'zi imtiyozlarga foyda keltiradimi yoki yo'qligini unchalik tushunmang.
Buning uchun siz uning qatllanish tezligini o'lchashingiz mumkin.

Avval variant (Muhim aniq emas, masalan, mos):
Siz o'rnatilgan holda foydalanishingiz mumkin PHP. sinf Datifim. Sanoat va vaqtni ta'minlash (u php7-ning hozirgi versiyasiga ko'ra php 5 bilan qo'llab-quvvatlana boshladi).
Men tezlikni o'lchash uchun funktsiya ushbu misolning bir qismi sifatida ishlatiladi, deb aytaman. uxlash ()dasturning bajarilishini ma'lum miqdordagi mikrosekundlar soniga kechiktiradi. Siz ijro etish tezligi tekshirilishi kerak bo'lgan kodingizni tekshirishingiz mumkin.

Shunday qilib. Boshlash uchun biz vaqtni o'zingiz boshlashingiz kerak bo'lgan narsani qayd qilamiz:

$ Starttime \u003d Yangi ma'lumotlar jadvali ("hozir");
Sinf namunasini yarating Datifim. parametr bilan "Endi" Joriy vaqtni olish.
Shundan so'ng, sinovdan o'tgan ssenariyani (masalan, bu uyquni funktsiya qilish kerak).

$ endtime \u003d yangi ma'lumotlar muddati ("hozir");
Va biz ssenariy qatl etilishi boshlanishi va oxiri o'rtasidagi farqni olamiz:
$ interval \u003d $ STARTTIME -\u003e farq ($ oxirgi vaqt);
Va natijada bir necha soniya va millisekundlar soniga olib keladi:
Echo $ interval - format ("% s sekundlar,% f mikrosekundlar");

To'liq va to'liq natija uchun siz yilni belgilashdan oldin tananing to'liq bosmachisini bajarishingiz mumkin.
$ Interval-\u003e Format ("% Y0,%,% D soati,% 2 minuti,% s sekundlar,% f mikrosekundlar");


Natijada, biz skript qatl etilishi kerak bo'lgan vaqtni olishimiz kerak.

Men uchun skriptni ijro etish tezligi:
01 soniya, 441 mikrosekund

Ushbu misolning barcha kodi:
$ Starttime \u003d Yangi ma'lumotlar jadvali ("hozir"); Uxlab yotgan (1000000); $ endtime \u003d yangi ma'lumotlar muddati ("hozir"); $ interval \u003d $ STARTTIME -\u003e farq ($ oxirgi vaqt); Echo ($ interval - ("% s sekundlar,% f mikrosekundlar");

Ikkinchi variant:
Php4-ning amaldagi versiyasida php4-ning amaldagi versiyasida qo'llab-quvvatlanadigan ichki mikrotim () funktsiyasidan foydalaning.

Mikrotim () joriy vaqt shamponini qaytaradi Un Mikrosekundlarda. Ushbu xususiyat faqat tizim qo'ng'irog'ini oladigan operatsion tizimlarda mavjud. olti kun ().


Bozor vaqtini sinovdan boshlanadi, bu o'zgaruvchan o'zgaruvchini yarating:
$ Start \u003d mikrotim (to'g'ri);
Funktsiya parametri mikrotim. O'tkazmoq to'g'ri. Natijani haqiqiy shaklda olish uchun suzish.joriy vaqtni bir necha soniya ichida va davr boshlanganidan beri taqdim etadigan Un Mikrosekundlarning aniqligi bilan.
Shundan so'ng, biz skriptni sinovdan o'tgan tanani (masalan, bu uyquni funktsiya) joylashtiramiz.
Uxlab yotgan (1000000); // funktsiyasi dasturning amal qilish muddatini 1000000 mikrosekundga joylashtiring
Endi biz skriptning so'nggi vaqtini olamiz:
$ Ent \u003d mikrotim (to'g'ri);
Skript ishining boshlanishi va oxiri o'rtasidagi farqni topamiz:
$ \u003d $ Ed - $ start;
Va natijani ko'rsatadi:
Echo "Pricatni bajarish vaqti:" ($ farq). "Sek.";

Mening skriptim davomida:
Scriptni bajarish vaqti: 1.000456094418 sek.

Ushbu misolning barcha kodi:
$ Start \u003d mikrotim (to'g'ri); Uxlab yotgan (1000000); $ Ent \u003d mikrotim (to'g'ri); $ \u003d $ Ed - $ start; Echo "Pricatni bajarish vaqti:" ($ farq). "Sek.";

Qaysi variantni aniqlab bilmayman, lekin funktsiyadan foydalanayotgan tanlovni taxmin qilaman mikrotim () aniqroq, chunki birinchi variantda, sinf namunasini yaratish uchun Datetime ("Hozir") Ko'proq vaqt sarflanishi kerak.

Birinchi navbatda hisobga olinishi kerak bo'lgan majburiy omilni tuzatish uchun skriptlar scriptni bajarish vaqti. Va bu kichik maqolada men juda yaxshi va oson yo'lni ko'rsataman, skriptning bajarilish vaqtini qanday aniqlash mumkin.

Buning asoslari sana va vaqt bilan ishlash uchun funktsiyalarga ega. Men bu qanday sodir bo'lishini tushunish uchun misolni ko'rib chiqishni taklif qilaman skriptni bajarish vaqtini hisoblash:

$ Start \u003d mikrotim (to'g'ri);
$ SUM \u003d 0;
uchun ($ i \u003d 0; i $ i< 100000; $i++) $sum += $i;
Echo "Pricatni bajarish vaqti:"
?>

Natijada biz buni ko'ramiz scriptni bajarish vaqti Masalan, bunday: " 0.014652967453 "Agar yumaloq bo'lsa, keyin u 0.015 soniya. Bu skriptni ijro etish vaqti.

Endi u qanday ishlaydi. Funktsiya mikrotim () uzatiladigan qiymat bilan to'g'ri. Yarim tunda o'tkaziladigan soniya sonini qaytaradi 01.01.1970 Bundan tashqari, ushbu qiymat soniyaning yuzdan biriga baholanadi.

Keyinchalik, biz tekshiradigan oddiy skript mavjud. Buning o'rniga, bu sizning skriptingiz bo'ladi. Va nihoyat, oxirgi qator joriy vaqt o'rtasidagi farq (skriptni bajargandan so'ng) va skript boshida yozganimizdan keyin farq qiladi. Uni boshlashdan oldin skript va vaqt o'rtasidagi farq bor va u erda scriptni bajarish vaqti.

Menimcha, bu erda hamma juda oddiy. Ammo vaqtni hisoblash usulini qo'llash uchun men tavsiya qilaman. Masalan, men dvigatelning ishini olib borganimda, ushbu sayt xarajatlari, men uning ishini deyarli tezlashtirdim 2 marta.