|
Таймер
|
| Автор |
Сообщение |
Wink $a ||= 5;


Зарегистрирован: 08.08.2006 Сообщения: 899 Откуда: Россия, Омск 113191 
|
Добавлено: Чт, 16 Ноя, 2006 04:03 Заголовок сообщения: Таймер |
|
|
Вот кусочек кода, который используется у меня на сайте. Собственно, таймер. Позволяет засекать временные промежутки и отслеживать продолжительность выполнения PHP скриптов. У кого есть ещё реализации таймеров - закидывайте сюда.
Сама функция: | Код: | function timer($shift = false)
{
static $first = 0;
static $last;
$now = preg_replace('#^0(.*) (.*)$#', '$2$1', microtime());
if (!$first) $first = $now;
$res = $shift ? $now - $last : $now - $first;
$last = $now;
return $res;
} |
Использование:
- первоначальная установка таймера (вставляется в самое начало кода)
- возвращает промежуток времени прошедший с предыдущего обращения к таймеру.
- возвращает промежуток времени прошедший с момента первого запуска таймера.
Пример:
Вставляем в начало кода: | Код: | <?php
function timer($shift = false)
{
static $first = 0;
static $last;
$now = preg_replace('#^0(.*) (.*)$#', '$2$1', microtime());
if (!$first) $first = $now;
$res = $shift ? $now - $last : $now - $first;
$last = $now;
return $res;
}
timer();
?> |
А это в конец: | Код: | | <?php echo '<!-- script execution time: '.timer().' -->'; ?> |
В итоге, в конец кода страницы будет добавлен комментарий, в котором содержится время, затраченное на её создание. |
|
| Вернуться к началу |
|
 |
Wink $a ||= 5;


Зарегистрирован: 08.08.2006 Сообщения: 899 Откуда: Россия, Омск 113191 
|
Добавлено: Чт, 16 Ноя, 2006 04:06 Заголовок сообщения: |
|
|
А теперь вопрос
Видел на некоторых сайтах пишется не только общее время генерации страницы, но и сколько из него затрачено на запросы к базе данных. Как это делают? |
|
| Вернуться к началу |
|
 |
KLeN Интернет на завтрак

Зарегистрирован: 20.09.2006 Сообщения: 52
2419 
|
Добавлено: Чт, 16 Ноя, 2006 06:30 Заголовок сообщения: |
|
|
Просто считают обращения, обращайся к бд и поднимай какой нибудь счетчик или напиши класс прослойку для работы с бд, который сам все это будет делать, но имх зачем это все
У меня всю эту информацию (время выполнения, кол-во затраченной памяти, кол-во и время запросов к БД) система выдает только если к ней обратиться со специальным ключом, а иначе толку не вижу. |
|
| Вернуться к началу |
|
 |
madhamster $a ||= 5;


Зарегистрирован: 09.10.2006 Сообщения: 729
32491 
|
Добавлено: Ср, 24 Янв, 2007 23:33 Заголовок сообщения: |
|
|
| Wink писал(а): | А теперь вопрос
Видел на некоторых сайтах пишется не только общее время генерации страницы, но и сколько из него затрачено на запросы к базе данных. Как это делают? |
Вот коечо намутил и вроде работает:
| Код: |
<?php
class database{
var $query_count = 0;
function dbquery($sql){
$query = mysql_query($sql);
if($query){
$this->query_count++;
return $query;
}else{
exit("SQL ERROR!");
}
}
}
include("connect.php");
$mysql = new database;
$mysql->dbquery("select * from web");
$mysql->dbquery("select * from web where id='2'");
$mysql->dbquery("select * from web where id='5'");
$mysql->dbquery("select * from web where id='3'");
$mysql->dbquery("select * from web where id='6'");
echo $mysql->query_count.' запросов к базе данных.';
?>
|
Выведет "5 запросов". |
|
| Вернуться к началу |
|
 |
Wink $a ||= 5;


Зарегистрирован: 08.08.2006 Сообщения: 899 Откуда: Россия, Омск 113191 
|
Добавлено: Чт, 25 Янв, 2007 04:05 Заголовок сообщения: |
|
|
| madhamster, угу, примерно так я и предполагал |
|
| Вернуться к началу |
|
 |
madhamster $a ||= 5;


Зарегистрирован: 09.10.2006 Сообщения: 729
32491 
|
Добавлено: Чт, 25 Янв, 2007 07:20 Заголовок сообщения: |
|
|
А можно ли это осуществить не используя классов? _________________
 |
|
| Вернуться к началу |
|
 |
larstas Интернет на завтрак


Зарегистрирован: 09.12.2006 Сообщения: 88 Откуда: Украина, Луганск 4422 
|
Добавлено: Пт, 26 Янв, 2007 22:45 Заголовок сообщения: |
|
|
madhamster
НУ, это вряд ли. Обычно такие штучки прописываются в классе использования баз данных. Так, в ЦМС и форумах они используются практически всегда. Еще не видел ЦМС без БДшного класса.
А на самом деле стоит просто логически подумать: каким образом ты будешь подсчитывать запросы к БД? И уж тем более время их выполнения? Вот так вот.
Есть правда один выход:
создать переменную вроде $db_counter, обнулить ее в начале выполнения скрипта, а потом после каждой строчки БД запроса делать $counter++;
Но это просто не резонно  |
|
| Вернуться к началу |
|
 |
|