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($ch, CURLOPT_RETURNTRANSFER, 1);
// 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:
