Skip to content

Command line interface for testing internet bandwidth using speedtest.net.

License

Notifications You must be signed in to change notification settings

aln-1/speedtest-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

speedtest-php

Library and command line interface for testing internet bandwidth using speedtest.net.

The goal of this project is to run server-side speedtest, from cli or web interface.

Latest Stable Version Total Downloads Latest Unstable Version License composer.lock php version

Installation

As standalone package

Download and install with

composer install

then run

./bin/speedtest

speedtest-php demo

(IP adress was hidden for the demo)

As project dependency

composer require aln/speedtest-php

then run

./vendor/bin/speedtest

CLI Usage

$ ./bin/speedtest -h

usage: speedtest [-h] [--no-download] [--no-upload] [--single] [--bytes]
                 [--share] [--simple] [--json] [--list] [--server=SERVER]
                 [--exclude=EXCLUDE] [--source=SOURCE] [--timeout=TIMEOUT]
                 [--version]

Command line interface for testing internet bandwidth using speedtest.net.
--------------------------------------------------------------------------
https://github.com/aln-1/speedtest-php

optional arguments:
  -h, --help            show this help message and exit
  --no-download         Do not perform download test
  --no-upload           Do not perform upload test
  --single              Only use a single connection instead of multiple. This
                        simulates a typical file transfer
  --bytes               Display values in bytes instead of bits. Does not
                        affect the image generated by --share, nor output from
                        --json
  --share               Generate and provide a URL to the speedtest.net share
                        results image
  --simple              Suppress verbose output and progress, only shows results
  --json                Output in JSON format. Speeds listed in bits and not
                        affected by --bytes. Can be combined with --simple
                        to supress progress
  --list                Display a list of speedtest.net servers sorted by
                        distance
  --server=SERVER       Specify a server ID to test against. Can be comma
                        separated values
  --exclude=EXCLUDE     Exclude a server from selection. Can be comma
                        separated values
  --source=SOURCE       Source IP address to bind to or interface name
  --timeout=TIMEOUT     HTTP timeout in seconds, default 10
  --version             Show the version number

Library

Minimal code

$ php -a
Interactive shell

php > require 'vendor/autoload.php';
php > $speedtest = new Aln\Speedtest\Speedtest();
php > $speedtest->getServers();
php > $speedtest->getBestServer();
php > $speedtest->download();
php > $speedtest->upload();
php > $results = $speedtest->results();
php > print_r($results);
Aln\Speedtest\Result Object
(
    [latency:protected] => 4.57
    [download:protected] => 47888585.578516
    [upload:protected] => 64841042.860629
    [bytesReceived:protected] => 59881235
    [bytesSent:protected] => 82579808
)

Units:

  • latency = ms
  • download / upload = bits/s
  • bytesReceived / bytesSent = bytes

With progress callback

$ php -a
Interactive shell

php > require 'vendor/autoload.php';
php > $config = new Aln\Speedtest\Config();
php > $config->setCallback(function ($results) { print_r($results); });
php > $speedtest = new Aln\Speedtest\Speedtest($config);
php > $speedtest->getServers();
php > $speedtest->getBestServer();
php > $speedtest->download();
Aln\Speedtest\Result Object
(
    [latency:protected] => 4.40
    [download:protected] => 0
    [upload:protected] =>
    [bytesReceived:protected] => 0
    [bytesSent:protected] => 0
)

// More dump was here ...

Aln\Speedtest\Result Object
(
    [latency:protected] => 4.40
    [download:protected] => 27519752.835724
    [upload:protected] =>
    [bytesReceived:protected] => 37153149
    [bytesSent:protected] => 0
)

(showing only first and last callback results from the download method)

Web demo

A one page demo is available at resources/demo.php

speedtest-php demo 2

Credits

This project is ported from the Python version by Matt Martz

License

This project is licensed under the Apache License Version 2.0 - see the LICENSE file for details

About

Command line interface for testing internet bandwidth using speedtest.net.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages