Подтвердить что ты не робот

Как определить скорость интернета в PHP?

Как создать страницу PHP, которая будет определять скорость интернет-пользователя и показывать ее на странице? Что-то вроде,

Ваша интернет-скорость??? Kbps

4b9b3361

Ответ 1

Возможно, это не совсем то, что вы ищете (прочитайте жирную часть), но я сомневаюсь, что что-то еще возможно.

Этот скрипт отправляет 512 КБ комментариев HTML вашему клиенту. Синтаксический анализ этого HTML-кода может увеличить общее время передачи, поэтому не принимайте это за скорость загрузки.

Цитата из: PHP Speed test

Источник здесь:

http://jan.moesen.nu/code/php/speedtest/index.php?source=1

Надеюсь, это поможет.

Ответ 2

<?php
$kb=1024;
echo "streaming $kb Kb...<!-";
flush();
$time = explode(" ",microtime());
$start = $time[0] + $time[1];
for($x=0;$x<$kb;$x++){
    echo str_pad('', 1024, '.');
    flush();
}
$time = explode(" ",microtime());
$finish = $time[0] + $time[1];
$deltat = $finish - $start;
echo "-> Test finished in $deltat seconds. Your speed is ". round($kb / $deltat, 3)."Kb/s";
?>

Ответ 3

Например, по запросу AJAX по времени на стороне клиента. Таким образом, вы можете определить приблизительную скорость загрузки, но не загружать. Для загрузки, отправка большого запроса AJAX POST может обрабатывать его.

С jQuery и $.ajax это довольно тривиально.

Ответ 4

Пользователь загружает файл на ваш сервер. Затем вы делите размер файла в kb со временем, прошедшим через секунды. Затем вы получаете kb/s (скорость загрузки).

$kb = round(filesize("file.jpg") / 1024); // 500kb
$time = time() - $start; // 5s
$speed = round($kb / $time); // 100kb/s

Ответ 5

Это работает для меня:

    $kb=512;
    echo "streaming $kb Kb...<!-";
    flush();
    $time = explode(" ",microtime());
    $start = $time[0] + $time[1];
    for($x=0;$x<$kb;$x++){
        echo str_pad('', 1024, '.');
        flush();
    }
    $time = explode(" ",microtime());
    $finish = $time[0] + $time[1];
    $deltat = $finish - $start;
    echo "-> Test finished in $deltat seconds. Your speed is ". round($kb / $deltat, 3)."Kb/s";
    ?>

Я получил это от здесь.

Ответ 6

Невозможно. PHP является сторонним сервером, и скорость обнаружения будет клиентом.

Вы можете найти работу, чтобы сделать это, tho.