Xayrli kun, hammaga.
PHP -da taymerni o'tkazishga harakat qilaylik
Ehtimol, ko'p odamlar savol berishgan:
1. Mening skriptim qancha vaqtni oladi.
2. Sahifa qancha ishlab chiqariladi (uni ko'plab saytlarda ko'rishingiz mumkin).

Shunday qilib, ketaylik.

Keling, taymerimizni OOPda, ya'ni sinf g'oyasida yaratamiz va Taymer sinfining nomini beramiz:

Sinf taymeri ()

Va biz darhol sinf uchun konstruktor yaratamiz, shunda biz taymer ma'lumotlarini qandaydir tarzda chaqira olamiz (bu asosan protsessorlar uchun kerak) va biz taymer natijalarini saqlaydigan o'zgaruvchini yaratishimiz kerak.
Mana shunday kod chiqadi:

$ timeTimer = qator ();

Sinf taymeri (
shaxsiy $ id;




$ this -> id = $ id;
}
}

Va darhol taymerni ishga tushirish, to'xtatish va joriy qiymatni chiqarish uchun funktsiyalarni yarataylik:

ClassTimer (
shaxsiy $ id;

/ * Taymer funksiyasini ishga tushirish * /
funktsiyani ishga tushirish () (
global $ timeTimer; // global o'zgaruvchiga murojaat qilish uchun
$ mtime = microtime (); // joriy vaqtni soniya va millisekundlarda bilib oling

$ mtime = $ mtime + $ mtime;
$ timeTimer [$ this -> id] ["start"] = $ mtime; // natijani global o'zgaruvchiga qo'ying
}

Funktsiyani to'xtatish () (
global $ timeTimer;
$ mtime = mikrotime ();
$ mtime = portlash ("", $ mtime);
$ mtime = $ mtime + $ mtime;
$ timeTimer [$ this -> id] ["stop"] = $ mtime;
$ timeTimer [$ this -> id] ["result"] = $ mtime -$ timeTimer [$ this -> id] ["start"];
}

Get funktsiyasi ($ rand = 5) (
global $ timeTimer;
if ($ timeTimer [$ this -> id] ["result"]) $ timeTimer [$ this -> id] ["result"] ni qaytarish;
$ mtime = mikrotime ();
$ mtime = portlash ("", $ mtime);
$ mtime = $ mtime + $ mtime;
qaytish davri ($ mtime - $ timeTimer [$ this -> id] ["start"], $ rand);

__Construct funktsiyasi ($ id = "") (
if (! $ id) (trigger_error ("Noto'g'ri parametr kiritish", E_USER_WARNING);)
if ($ timeTimer [$ id]) (trigger_error ("Taymerni ishga tushirib bo'lmaydi", E_USER_WARNING);)
$ this -> id = $ id;
}
}

O'ylaymanki, sinfning o'zida muammolar yo'q. Taymerni ishga tushirishgina qoladi:

$ taymer = yangi taymer ("test"); // "test" nomli taymer yarating
$ taymer -> boshlash (); // taymerni ishga tushirish
$ taymer -> to'xtatish (); // taymerni to'xtatish

Bu kod natijasida biz juda kichik qiymatga ega bo'lamiz !!!
Keling, qandaydir tarzda tizimni yuklashga harakat qilaylik. Siz pastadirdan foydalanishingiz mumkin:

$ taymer = yangi taymer ("test");
$ taymer -> start ();
uchun ($ i = 0; $ i< 500000; $i++){//запустим цыкл на пол милиона раз
if (is_int ($ i/ 100000))) (// agar joriy qiymat 100000 yoki 200000 yoki 300000 bo'lsa .... joriy natijani ko'rsatadi, lekin taymerni to'xtatmang!
echo $ timer -> olish (). "
";
}
}
$ taymer -> to'xtatish ();
print_r ($ timeTimer); // Taymerlarimizni chop eting

Bu sinfdan foydalanib, siz tizimni yuklamaydigan ko'plab taymerlarni yaratishingiz mumkin.
Mana shunday kichik taymer skript. Bu sinfni ham biroz soddalashtirish va o'zingiz uchun moslashtirish mumkin.