Оптимізація сайту. Як порахувати час виконання скрипта?

Є у мене один хороший знайомий і у нього є сайт. Час від часу допомагаю йому в виправленні різних недоробок на цьому ресурсі. Движок там самопісний, причому писався такими руками, про прямоті яких я скромно промовчу.

Все було більш-менш спокійно до того часу, поки відвідуваність сайту була дуже низькою. І ось сайт почав оживати, наближаючись до першої тисячі уникав в день … Однак радість була не довгою – движок сайту почав конкретно тупити. Хостер погрожує пальцем за надмірне навантаження на MySQL і вимагає перевести його на виділений сервер. Я звичайно попереджав свого товариша, що код движка жахливий, і ось вирішив показати масштаби лиха наочно.

Як з’ясувалося, на формування деяких сторінок йшло (!) Більше 450 запитів до бази даних. І це з урахуванням того, що ніякого кешування в движку немає в принципі. Я не вважаю себе програмістом, але навіть мені ясно, що це явний перебір.

Як порахувати час виконання скрипта?

Насамперед з’ясуємо наскільки швидко або повільно формуються сторінки. Це, мабуть, найпростіше завдання, яка може бути вирішена лише за кілька хвилин для будь-якого сайту. Розписувати детально що означає та чи інша рядок коду не буду, наведу вже працюючий приклад. На початок скрипта поміщаємо:

<? php $ start = microtime(true); ?>

А дану конструкцію в самий кінець вашого скрипта:

<? php
$ time = microtime(true)  $ start;
printf(‘Скрипт виконувався% .4F сек.’, $ time);
?>

Як порахувати кількість запитів до MySQL при формуванні сторінки?

Ось це завдання набагато складніше. В Mysql немає вбудованої функції підрахунку запитів. Наскільки мені відомо, немає такої функції і в php, тому її доведеться писати самим. Суть в тому, щоб кожен запит до MySQL замінити на звернення до нашої функції, яка вже і буде підраховувати ці самі запити.

Мінус методу в тому, що нам доведеться трохи поколупатися в коді движка, замінюючи запити до MySQL, але інших варіантів я не бачу. У моєму випадку довелося пробігтися звичайним текстовим редактором всього по 3-4 файлів з заміною одного рядка на іншу, зробити це можна автоматично. Так що, не така вже й велика робота вийшла. Однак, це того варте – тепер наочно можна подивитися скільки запитів до БД було при формуванні тієї чи іншої сторінки.

Наводжу код функції, яка буде робити цю потрібну роботу (поміщаємо в початок скрипта):

<? php
$ query_count =0;
function do_query($ query) 
 { 
    $ GLOBALS[‘Query_count’]++; 
    return mysql_query($ query); 
 }
?>

Тепер всі запити до БД слід проводити через нашу функцію. Виглядає це приблизно так:

$ sql=do_query("SELECT * ….");

Залишилося в кінці скрипта вивести результати:

<? php echo ‘SQL запитів:’.$ query_count; ?>

От і все. Тепер у нас є страшні цифр і прийшла пора зайнятися оптимізацією движка сайту. Але це вже інша тема, про яку ще належить розповісти …

Якщо вважаєте статтю корисною, не лінуйтеся ставити лайки і ділитися з друзями.

Ссылка на основную публикацию