page load time

Hi,

I have an image gallery and I want to display the time it took all of the photos to load after they are done loading.
LVL 3
Computer GuyAsked:
Who is Participating?
 
Beverley PortlockConnect With a Mentor Commented:
Ahh.. just noticed, it's the photos you're timing, not the script. In that case it'll be javascript, not PHP. Sorry......
0
 
Aaron TomoskySD-WAN SimplifiedCommented:
Firefox + Yslow + firebug
0
 
Computer GuyAuthor Commented:
On the page to the user not browser
0
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
Beverley PortlockCommented:
Look at http://www.php.net/microtime

There are examples in the code of how to use that to time a script, but put one line at the start after the <?php tag and another near the end and simply subtract, then echo the result onto the screen.

0
 
sbickerstaffCommented:
You could probably start a javascript counter and output it to a field, but I'm not sure how you would stop this when the last image is loaded i.e. if the functionality is there in the browser to trigger an event when all images have been downloaded.
0
 
Beverley PortlockCommented:
From the page linked to above...

<?php
$time_start = microtime(true);

// Sleep for a while
usleep(100);

$time_end = microtime(true);
$time = $time_end - $time_start;

echo "Did nothing in $time seconds\n";
?>

Open in new window

0
 
Computer GuyAuthor Commented:
Do you have a Javascript solution?
0
 
Beverley PortlockCommented:
"Do you have a Javascript solution?"

No. I'm reasnably good at javascript but PHP is my main area of expertise. Having said that it seems to me that the real problem is the customer's machine and the ADSL (or whatever) line used to view the website. The PHP script will simply add <img../> tags in a fraction of a second and it is the process of downloading them to the client machine that takes all the time, so where you say "On the page to the user not browser" you need to measure the whole page download.

Now there are three ways of doing things in Javascript at preset times

1. Put javascript in the <head> section. This will run BEFORE the page shows up to the user

2. Put javascript at the end of the <body> section. This runs as soon as the HTML is downloaded, but pictures etc may still be downloading

3. Put javascript in a function and trigger using the  onLoad event. This should not trigger until everything has loaded.


So, we can try something like this (UNTESTED)

<head>
   <script>
      var startTime = new Date().getMilliseconds();
      var actualTime = 0;
      var endTime = 0;

      function timeLoad() {
            endTime = new Date.getMillseconds();
            actualTime = (endTime - startTime ) / 1000;
            alert( "It took " + actualTime + " seconds" );
      }
   </script>
</head>
<body onLoad='timeLoad()' >
   ...
   ...
   etc


As I said, javascript is not my strongest area so I may be a bit off with this
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.