This page was executed in this time...

drakkarnoir
drakkarnoir used Ask the Experts™
on
I've been quite curious for a while on how sites like phpmyadmin it says things like "SQL-query executed in .0095 seconds" etc. and on PHP pages things like "Page rendered in .94 seconds".

Also, when pages say "Executed 8 queries, and a total of 980 queries".

Just wondering how to do simple little footer details that might spruce up a site footer.

Thanks in advance.
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®

Commented:
hi,

this should work

<?
$start = microtime();
$starta = explode(" ", $start);
$start = $starta[1] + $starta[0];
?>
your content here
<?
$end = microtime();
$enda = explode(" ", $end);
$end = $enda[1] + $end[0];
$overall = $end - $start;
print "Page rendered in " . $overall . " microseconds";
?>
test this one (it works succesfully):

<?
function getmicrotime() {  
    list($usec, $sec) = explode(" ",microtime());  
    return ((float)$usec + (float)$sec);  
}
$start_time = getmicrotime();
?>

you can put this anywhere (header its a good idea)

<?
$end_time = getmicrotime();
$total_time = round($end_time - $start_time,3);  # the "3" returns: X.XXX, if put "2" this will return X.XX
echo "page generated in $total_time seconds";
?>

and this other one prints the x.xxx secons you talking about
The option from paStiSSet will work a jiffy for page execution time. As for the number of SQL queries, I alias the mysql_query function for that:
----------------------------------
function query($sql){
      global $sql_num_queries, $sql_num_rows, $sql_num_fields, $sql_time;

      if(!isset($num_queries))
            $num_queries = 1;
      else
            $num_queries++;

      $start_query_time = getmicrotime();
      $query = mysql_query($sql);
      $end_query_time = getmicrotime();

      if(!isset($sql_num_rows))
            $sql_num_rows = mysql_num_rows($query);
      else
            $sql_num_rows += mysql_num_rows($query);
      if(!isset($sql_num_fields))
            $sql_num_fields = mysql_num_fields($query);
      else
            $sql_num_fields += mysql_num_fields($query);

      if(!isset($sql_time))
            $sql_time = ($end_query_time - $start_query_time);
      else
            $sql_time += ($end_query_time - $start_query_time);
}
----------------------------------

Then embed something more like this at the end of your page:
<?php
$total_page_time = round(getmicrotime() - $start_time, 3);
$total_sql_time = round($sql_time, 3);
echo <<<END
Statistics:
 Page generated in $total_page_time seconds
 Read $sql_num_fields within $sql_num_rows rows from $sql_num_queries queries in $total_sql_time seconds
END;
?>

You can add all sorts of useless but interisting server stats if you're bored enough - current number of visitors, bandwidth usage, server uptime, number of SETI data packets crunched...

Commented:
ignore my script, its poo

Author

Commented:
Thank you so so much everybody for your input.

ASCII_Man, when you said I could calculate bandwith, how would I go about doing that? I've seen it done on cPanelX (like that Bandwith used this month) but how would I go about doing that via PHP?

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial