Доброго часу доби всім.
Давайте спробуємо сдалал таймер на PHP
Напевно багато хто задавався питаннями:
1. Скільки часу забирає мій скрипт.
2. Скільки генерується сторінка (можна помітити на багатьох сайтах).

І так, поїхали.

Давайте наш таймер створимо на ООП, тобто в иде класу, і дамо назву класу Timer:

Class Timer ()

І давайте відразу створимо конструктор класу, щоб ми змогли як то називати дані таймера (це в більшості потрібно для оброботчіков) і також потрібно створити змінну, де ми змогли зберігається результати таймерів.
Ось код, який вийде:

$ TimeTimer \u003d array ();

Class Timer (
private $ id;




$ This -\u003e id \u003d $ id;
}
}

І давайте створимо одночасно функції для запуску таймера, остоновкі і витягування поточного значення:

ClassTimer (
private $ id;

/ * Функція запуску таймера * /
function start () (
global $ timeTimer; // щоб можна було ссилатся на глобальну змінну
$ Mtime \u003d microtime (); // дізнаємося поточні час в секундах і мілісекундах

$ Mtime \u003d $ mtime + $ mtime;
$ TimeTimer [$ this -\u003e id] [ "start"] \u003d $ mtime; // занесемо результат в глобальну змінну
}

Function stop () (
global $ timeTimer;
$ Mtime \u003d microtime ();
$ Mtime \u003d explode ( "", $ mtime);
$ Mtime \u003d $ mtime + $ mtime;
$ TimeTimer [$ this -\u003e id] [ "stop"] \u003d $ mtime;
$ TimeTimer [$ this -\u003e id] [ "result"] \u003d $ mtime - $ timeTimer [$ this -\u003e id] [ "start"];
}

Function get ($ rand \u003d 5) (
global $ timeTimer;
if ($ timeTimer [$ this -\u003e id] [ "result"]) return $ timeTimer [$ this -\u003e id] [ "result"];
$ Mtime \u003d microtime ();
$ Mtime \u003d explode ( "", $ mtime);
$ Mtime \u003d $ mtime + $ mtime;
return round ($ mtime - $ timeTimer [$ this -\u003e id] [ "start"], $ rand);

Function __construct ($ id \u003d "") (
if (! $ id) (trigger_error ( "Wrong parametr input", E_USER_WARNING);)
if ($ timeTimer [$ id]) (trigger_error ( "Can not init timer", E_USER_WARNING);)
$ This -\u003e id \u003d $ id;
}
}

Ну я думаю, що в самому класі як би проблем немає ніяких. Залишається тільки форматувати наш таймер:

$ Timer \u003d new Timer ( "test"); // створюємо таймер з ім'ям "test"
$ Timer -\u003e start (); // запускаємо таймер
$ Timer -\u003e stop (); // зупиняємо таймер

В результаті даного коду, ми отримаємо дуже маленьке значення !!!
Давайте спробуємо якось завантажити систему. Можна скористатися циклом:

$ Timer \u003d new Timer ( "test");
$ Timer -\u003e start ();
for ($ i \u003d 0; $ i< 500000; $i++){//запустим цыкл на пол милиона раз
if (is_int ($ i / 100000)) (// якщо поточні значення 100000 або 200000 або 300000 .... виведемо текушего результат, але таймер не зупиняємо!
echo $ timer -\u003e get (). "
";
}
}
$ Timer -\u003e stop ();
print_r ($ timeTimer); // виведені наші таймера

Використовуючи даний клас можна створювати безліч таймерів, які не будуть навантажувати систему.
Ось такий собі не великий скрипт таймерів. Даний клас можна також ще і спростить трохи, і налаштувати під себе.