Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> скорость интернет-канала 
:(
    Опции темы
dVital
  Дата 8.7.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 21.6.2007

Репутация: нет
Всего: нет



Мне нужно написать скрипт на php, который бы позволил измерять скорость интернет- канала. Однако, я совершенно не знаю как подступится к решению этой задачи. Может кто-нибудь подсказать принципы измерения скорости?

Я пробовал измерять скорость закачки файла, но это совсем не то.  smile 


 ! 
PARROT
А причем тут раздел для ПРОФИ? Тут профи не сидят.  :crazy . На первый раз прощаю, но!!! соблюдайте разделы!


Это сообщение отредактировал(а) PARROT - 8.7.2007, 16:34
PM MAIL   Вверх
UADeveloper
Дата 8.7.2007, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 8.7.2007
Где: Харьков

Репутация: нет
Всего: нет



Цитата(dVital @  8.7.2007,  13:35 Найти цитируемый пост)
Я пробовал измерять скорость закачки файла, но это совсем не то.  

Вот на этом все и построено. Ты закачиваешь файл и отдаешь опять на сервер -  отсуда и берется скорость. Но есно если паралельно будет что-то загружатся - то будут не точные результаты.

PM MAIL   Вверх
dVital
Дата 9.7.2007, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 21.6.2007

Репутация: нет
Всего: нет



Цитата

Вот на этом все и построено. Ты закачиваешь файл и отдаешь опять на сервер -  отсуда и берется скорость. Но есно если паралельно будет что-то загружатся - то будут не точные результаты.


чего-то непонятно как это можно реализовать без ведома пользователя... 
PM MAIL   Вверх
PROme2
Дата 9.7.2007, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 4.1.2006

Репутация: нет
Всего: нет



dVital, не обязательно именно файл принимать, это может быть любая инфа, автоматически отправленная post-ом
PM MAIL   Вверх
dVital
Дата 9.7.2007, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 21.6.2007

Репутация: нет
Всего: нет



Придумал маленький скриптик для этого:

Код

<?php

 if (!empty($_POST)) {
    $time1 = mktime ( $_POST['hour'], $_POST['minute'], $_POST['second'], $_POST['month'], $_POST['day'], $_POST['year'] ) + 2592000;
    $time2 = time();
    echo strlen($_POST['sendTRASH'])/($time2 - $time1);
}
 

 $sendTRASH='';
for ($i=0; $i<100000; $i++) $sendTRASH .= "1";
 
 echo <<<HTML
 <form name="form1" action="" method="post">
<input type="hidden" name="year" value="" />
<input type="hidden" name="month" value="" />
<input type="hidden" name="day" value="" />
<input type="hidden" name="hour" value="" />
<input type="hidden" name="minute" value="" />
<input type="hidden" name="second" value="" />
<input type="hidden" name="millisecond" value="" />
<input type="hidden" name="sendTRASH" value="$sendTRASH" />
<input type="submit" name="" value="Узнать скорость" onclick="var date1 = new Date(); document.form1.year.value = date1.getFullYear(); document.form1.month.value = date1.getMonth(); document.form1.day.value = date1.getDate(); document.form1.hour.value = date1.getHours(); document.form1.minute.value = date1.getMinutes(); document.form1.second.value = date1.getSeconds(); form1.submit(); return false;" />
</form> 
HTML;

?>



Но есть проблемы: почему-то разница между текущим временем, получаемым в ЯваСкрипт и текущим временем в php всегда равно 2592000. Вообще непонятно почему.... Может кто увидит ошибку?


PM MAIL   Вверх
dVital
  Дата 10.7.2007, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 21.6.2007

Репутация: нет
Всего: нет



Лучше, конечно, так.. Но результат не меняется. Все равно очень большая разница между текущим временем в php и javaScript, которой быть не должно.

Код

<?php

 if (!empty($_POST)) {
    $time1 = $_POST['time1'];
    $time2 = time();
    echo strlen($_POST['sendTRASH'])/($time2 - $time1);
}
 

 $sendTRASH='';
for ($i=0; $i<100000; $i++) $sendTRASH .= "1";
 
 echo <<<HTML
 <form name="form1" action="" method="post">
<input type="hidden" name="time1" value="" />
<input type="hidden" name="sendTRASH" value="$sendTRASH" />
<input type="submit" name="" value="Узнать скорость" onclick="var date1 = new Date(); document.form1.time1.value = parse(date1); form1.submit(); return false;" />
</form> 
HTML;

?>


Может кто сталкивался с этой проблемой?  smile 
PM MAIL   Вверх
azesmcar
Дата 17.7.2007, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



Здравствуйте,

Так как мне и самому этот скрипт не помешает решил поднять этот топик.
Написано скрипт, вроде по логике все должно работать, а работает не хуже любого генератора случайных чисел..в чем собственно дело?

Код

<?
    $i = 0;
    $time = mktime();
    while ( mktime() - $time == 0 )
    {
        print(" ");
        flush();
        $i++;
        $time = mktime();
    }
    echo "Your internet connection speed is: ".round($i/1024, 2)." Kb/s";
?>


Добавлено через 2 минуты и 44 секунды
А хотя вроде понимаю отчего. Возможно mktime() - $time вернет > 0 через пол секунды, возможно через 100 милисекунд, а возможно и в самом деле продлиться секунду..а как исправить то проблему?
PM   Вверх
Diesel Draft
Дата 18.7.2007, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: 1
Всего: 5



Не знаю правильно ил нет но идея такова:


час = Читаем текущую дату
выводим 100кб информации
час = текущий час - час

Выводим час


Думаю алгоритм ясен. Сожалению не маю возможности перепроверить здесь


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
sTa1kEr
Дата 19.7.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



azesmcar, а зачем на 8ой строчке $time по новой присваивать метку времени? 
Если требуется время с точностью до миллисекунд, то есть такая функция microtime()
Далее, в вашем коде для пересылки каждого байта будет проходит одна итерация в цикле, т.е. если канал, к примеру, 1 mb/s то больше времени уйдет на сам цикл, а не на передачу данных. Попробуйте выполнить следующий код:
Код

$i = 0;
$time = microtime(true);
while ($i < 1048576)
{
    echo ""; // Реальные данные не передаются
    flush();
    $i++;
}
echo microtime(true) - $time;

У меня он выполнялся 0,54 секунды! Можете попробовать передавать разом все данные:
Код

for ($str = "<div style=\"display: none;\">"; strlen($str) < 1048570; $str .= chr(rand(65,122))); 
$time = microtime(true);
echo $str;
flush();
$diff = microtime(true) - $time;
echo "Your internet connection speed is: ".round(1024/$diff, 2)." Kb/s";

Это все равно очень приблизительные данные, но хоть цифры адекватные, 45 мб/сек на localhost и 640 кб/сек на хостинге.

Это сообщение отредактировал(а) sTa1kEr - 19.7.2007, 13:44
PM MAIL   Вверх
Diesel Draft
Дата 19.7.2007, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: 1
Всего: 5



Можно засечь час за который выгрузится буфер. Это и будет час скачки файла


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
SergV
Дата 27.9.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 4.8.2006
Где: Германия

Репутация: нет
Всего: 1



sTa1kEr, в первом приведённом коде значение получается с минусом, а второй код, у меня с ним на локалке и хосте выходит свыше 800-900 мб/сек, а если ещё раз делить на 1024, то до 700-800 кб/сек.

щас протестил свой канал но 10 разных тест страницах, скорость везде разная, от 83.75 Kb/sec до 1396.3 kb/s, вобщем непонятно, кто и как меряет. С моим DSL16000, 1396.3 kb/s както ближе, если учесть что качаю до 2,5 мб/сек.

Блин, мне надо код который примерно определит скорость, чтобы определить, модем это, ISDN или скоростной нет. Вот и думай, как правильно это просчитать.  smile 

Это сообщение отредактировал(а) SergV - 27.9.2007, 12:01
PM   Вверх
sTa1kEr
Дата 27.9.2007, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(SergV @  27.9.2007,  11:31 Найти цитируемый пост)
sTa1kEr, в первом приведённом коде значение получается с минусом

Могу только предположить, что это возможно в PHP 4, т.к. параметр в microtime() появился только в 5ом.
Либо у вас время назад идет smile

Цитата(SergV @  27.9.2007,  11:31 Найти цитируемый пост)
а второй код, у меня с ним на локалке и хосте выходит свыше 800-900 мб/сек

Вполне возможно. Я бы даже сказал это ближе к истине, чем 45 мб/сек. Т.к. никакого чтения с диска не происходит, то это значение должно стремится к пропускной способности шины (в частности северного моста).

Цитата(SergV @  27.9.2007,  11:31 Найти цитируемый пост)
щас протестил свой канал но 10 разных тест страницах, скорость везде разная, от 83.75 Kb/sec до 1396.3 kb/s, вобщем непонятно, кто и как меряет. С моим DSL16000, 1396.3 kb/s както ближе, если учесть что качаю до 2,5 мб/сек.

Тоже логично... это очень примерный тест и к тому же многое зависит от загруженности сервера и пропускной способности канала. К тому же здесь не учитывается время отклика и размер данных слишком маленький.
PM MAIL   Вверх
SergV
Дата 28.9.2007, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 4.8.2006
Где: Германия

Репутация: нет
Всего: 1



Цитата
Могу только предположить, что это возможно в PHP 4

Точно, на локале у меня 4 пхп, а на хосте я этот код не проверял.

Цитата
Вполне возможно. Я бы даже сказал это ближе к истине, чем 45 мб/сек. Т.к. никакого чтения с диска не происходит, то это значение должно стремится к пропускной способности шины (в частности северного моста).

А как быть тогда с хостом, там у меня тоже примерно столько же кажет, или у меня с провайдером связь по северному мосту? ;)
Просто уж слишком большая скорость получается.

Ладно, я просто хотел сделать проверку на сайт, до загрузки страницы, чтобы от этого плясать с шаблоном.


Это сообщение отредактировал(а) SergV - 28.9.2007, 10:37
PM   Вверх
sTa1kEr
Дата 28.9.2007, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



SergV, еще раз. localhost - это зацикливание компьютера на самого себя, при получении данных с localhost-а ничего не передается по сети, поэтому скорость канала в localhost измерять абсолютно бессмысленно, так же как и тестировать подобные скрипты на localhost.

С реальным, удаленным хостом цифры будут уже адекватные. Только учтите, что этот код для PHP 5. Для PHP 4 надо использовать microtime() без парамаметра. К примеру, как написано в мануале
Код

function getmicrotime()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}


Это сообщение отредактировал(а) sTa1kEr - 28.9.2007, 10:52
PM MAIL   Вверх
SergV
Дата 29.9.2007, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 4.8.2006
Где: Германия

Репутация: нет
Всего: 1



sTa1kEr, так яже говорю про реальный хост, и то что у меня на локале, что на реальном хосте, практически одно и тоже. Может это связано с пхп, но всё равно, думаю разница должна быть заметная. чего не наблюдалось.

Ладно, попробую ещё раз без параметров, может и вправду из за этого проблема, тогда можно будет простую проверку на версию пхп сделать, чтоб коректно работал скрипт.

sTa1kEr, спасибо за помощь.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0585 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.