Open Source » PHP Based Speed Test

Operating System[s]: AnyThis script downloads 3 [somewhat random] images ranging from 1MB to 3MB. It determines an average speed (based on the individual speed of each download) and displays the result.

<?php
/************************************************
** Download Speed Test [PHP/cURL based]        **
** Created on July 15th, 2010 at 1AM CST       **
*************************************************
** Copyright (C) 2010 adam@papsy.net           **
************************************************/
// DEFINE THE SOURCE IMAGES
$source_img = array(
"http://spectrum-mrc.com/docs/smrc_wallpaper1024x768.bmp",    
"http://ofarchades.webs.com/sky1.bmp"
"http://www.crashcodes.com/files/BlueBlackPatternedFade.bmp",
"http://www.litcham.org/photos/Common1946_2Mb.jpg",
"http://www.wavelengthstudios.com/photo/imgsrc/sample.jpg",
"http://www.machineinteltech.com/images/2MB_SRAM_Boards.JPG",
"http://www.rimba.com/rombuk/Rombuk&MtEverest1MB.jpg",
"http://www.dwfearn.com/VT-4-HighRes-1MB.jpg",
"http://www.lib.utexas.edu/maps/national_parks/bigt95.jpg"
);
// DETERMINE NUMBER OF SOURCE IMAGES
$source_cnt count($source_img)-1;
// GRAB A RANDOM SOURCE IMAGE
$source_rnd rand(0$source_cnt);
// SPECIFY SOURCE IMAGE #1
$source_ig1 $source_img[$source_rnd];
// GRAB A RANDOM SOURCE IMAGE [AGAIN]
$source_rnd rand(0$source_cnt);
// SPECIFY SOURCE IMAGE #2
$source_ig2 $source_img[$source_rnd];
// GRAB A RANDOM SOURCE IMAGE [AGAIN]
$source_rnd rand(0$source_cnt);
// SPECIFY SOURCE IMAGE #3
$source_ig3 $source_img[$source_rnd];

// DOWNLOAD THE FIRST IMAGE AND DISPLAY THE SPEED
printf("Downloading image #1: "); 
$speed1 download_image($source_ig1); 
printf("Finished (%s kb/s)\n"$speed1);
// DOWNLOAD THE SECOND IMAGE AND DISPLAY THE SPEED
printf("Downloading image #2: "); 
$speed2 download_image($source_ig2); 
printf("Finished (%s kb/s)\n"$speed2);
// DOWNLOAD THE THIRD IMAGE AND DISPLAY THE SPEED
printf("Downloading image #3: "); 
$speed3 download_image($source_ig3); 
printf("Finished (%s kb/s)\n"$speed3);
// CALCULATE AN AVERAGE AND ROUND IT OFF
$average number_format(($speed1+$speed2+$speed3)/3);
// DISPLAY THE FINAL RESULT
printf("\r\nAverage speed: %s kb/s\r\n"$average);

// DOWNLOADS THE SPECIFIED URL AND RETURNS THE SPEED FOR THE TRANSFER
function download_image($url) {
    
// INITIALIZE THE CURL OBJECT
    
$ch curl_init($url);
    
// SPECIFY RETURN TRANSFER
    
$cc curl_setopt($chCURLOPT_RETURNTRANSFER1);
    
// EXECUTE THE REQUEST
    
$rt curl_exec($ch);
    
// GRAB THE REQUEST/RESPONSE INFORMATION
    
$in curl_getinfo($ch);
    
// CLOSE THE CURL HANDLE
    
$cc curl_close($ch);
    
// DETERMINE BYTES PER SECOND DOWNLOADED
    
$bs $in['speed_download'];
    
// CONVERT IT TO KB/S
    
$ks $bs/1024;
    
// RETURN THE RESULT
    
return(number_format($ks));
}
?>

Output: