Reputation: 5717
I want to show the users how long the page takes to fully load in the footer of my website.
How do I go about doing this? I assume there is a function that can be used for this?
Not sure what language this type of feature is developed in?
Any help would be appreciated, thanks.
Upvotes: 11
Views: 40148
Reputation: 111
The other answers are correct, there are two methods depending on the version of PHP in use PHP has introduced $_SERVER['REQUEST_TIME_FLOAT']
.
To embed a formatted PageGen time use the following;
PHP7.3
<div align="center"><span style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size:8px; color #333333;">(PageGen <?
$tt = number_format(rtrim(sprintf("%.20f", (microtime(true) - $_SERVER['REQUEST_TIME_FLOAT'])), "0"),6,'.',',');
if (strpos(($tt."0"), "0") != 0) {
$tt = number_format($tt,2,'.',',');
}
echo ($tt);
?> Seconds)</span></div>
On some of my servers this did not work on PHP7.4 and it did not work on PHP4 versions, but it is in the documentation.
Appendix:
https://php.willtech.net.au/manual/en/function.microtime
https://php.willtech.net.au/reserved.variables.server
Upvotes: 1
Reputation: 722
2 simple steps to show load time on your page:
1. Put this code at beginning of your page:
<?php $start_time = microtime(true); ?>
2. Put this code at the end of your page:
This page was generated in <?php echo(number_format(microtime(true) - $start_time, 2)); ?> seconds.
Upvotes: 3
Reputation: 172378
You may try like this:
$starttime = microtime(true); // Top of page
// Code
$endtime = microtime(true); // Bottom of page
printf("Page loaded in %f seconds", $endtime - $starttime );
As commented by Ed Heal you need to use JavaScript as network/proxy/routes need to be factored in.
Also you may try this approach as well:
From the source
Put the following code at the very top of your PHP page (if you measure the time needed for particular part of the code put this right before that PHP code part)
<?php
$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$start = $time;
?>
The following code has to be put at the very end of the web page (or the end of the PHP code part)
<?php
$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$finish = $time;
$total_time = round(($finish - $start), 4);
echo 'Page generated in '.$total_time.' seconds.';
?>
Upvotes: 32
Reputation: 12916
You need two times: the starttime and the endtime. Using JavaScript the starttime can only be approximated because the script will only fire when it is loaded, not before. This means that you will not measure stuff like DNS looking, initial latency and initial downloading. If you're fine with this limitation do this:
onload
determine the current time again Another caveat: Stuff that gets loaded via ajax is not measured here either. The onload
fires before the ajax stuff runs.
Upvotes: 1