Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Время генерации скрипта
 
 автор: Artem S.   (18.08.2004 в 16:07)   письмо автору
 
 

Есть необходимость выводить на главной станице. Много раз видел, но не понял как. Есть мысль что в начале ставить $time1=time(); и в конце $time2=time(); и вывести результат разницы. Так можно? Или есть внутренняя функция или другой метод

   
 
 автор: Кузнецов М.В.   (18.08.2004 в 23:59)   письмо автору
 
   для: Artem S.   (18.08.2004 в 16:07)
 

Как правило, делается примерно так.
Используется функция microtime(), возвращающая строку вида "msec sec", где msec — составляющая в микросекундах, а sec — время в секундах, прошедшее с 1970 года.
Применение этой функции приведет примерно к такому результату:
0.48023600 1076713360
Такое представление не очень удобно для вычисления разницы во времени, поэтому его необходимо преобразовать в числовой вид. Иначе говоря, строку "msec sec" необходимо преобразовать к виду "sec.msec ". Сделать это можно так:
<?php
$part_time 
explode(' ',microtime());
$real_time $part_time[1].substr($part_time[0],1);
?>

Здесь при помощи функции explode строка, принимаемая во втором параметре, разбивается на подстроки по разделителю, передаваемому в первом параметре (в нашем случае это символ пробела). Результат возвращается в виде массива, элементы которого содержат подстроки разбиваемой строки.
Для получения разности между двумя числами, размещёнными в строке можно воспользоваться функцией bcsub. К примеру:
<?php
$diff_time 
bcsub($stop_time$start_time6);
?>

Функция принимает помимо двух строковых параметров ($stop_time, $start_time) так же число знаков после запятой необходимых в возвращаемом функцией результате.
Теперь можно для удобства сделать функцию gettime, в которую поместить вышенаписанный код:
<?php
function gettime()
{
  
$part_time explode(' ',microtime());
  
$real_time $part_time[1].substr($part_time[0],1);
  return 
$real_time;
?>

Вот теперь все готово для вычисления времени выполнения какого-либо скрипта. Для примера посмотрим, во сколько раз преобразование типа в стиле C меньше, чем при помощи встроенной функции settype.
<?php
// подключаем функцию gettime
include "gettime.php";
$var "5";
// профилируем преобразование типа с помощью функции settype
$start_time gettime(); // начало 
settype($var,integer);
$stop_time gettime(); // окончание
$diff_time bcsub($stop_time,$start_time,6); // вычисляем разницу
echo("преобразование типа функцией settype: ".$diff_time."<br>");
// профилируем преобразование типа в стиле С
$start_time gettime();
$var = (int)$var
$stop_time gettime();
$diff_time bcsub($stop_time,$start_time,6);
echo(
"преобразование типа в стиле с++: ".$diff_time."<br>");
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования