Как получить скорость интернета?

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Alexiy2
Сообщения: 104
Зарегистрирован: Вт май 12, 2015 9:59 pm
Благодарил (а): 16 раз
Поблагодарили: 13 раз

Re: Как получить скорость интернета?

Сообщение Alexiy2 » Пн июн 04, 2018 2:31 am

Уважаемые!!! Покажите весь скрипт под Unix, а то у меня не получается забрать сразу все данные разом! Мозгов не хватает, не могу допедрить, как это вы делаете, а Коннект у вас с нулевыми значениями!
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Как получить скорость интернета?

Сообщение directman66 » Пн июн 04, 2018 7:58 am

Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Alexiy2
Сообщения: 104
Зарегистрирован: Вт май 12, 2015 9:59 pm
Благодарил (а): 16 раз
Поблагодарили: 13 раз

Re: Как получить скорость интернета?

Сообщение Alexiy2 » Пн июн 04, 2018 9:53 am

Сама утилита стоит и скриптом вызывается! В ответ с ключом --simple выдает краткий отчёт с тремя строками:
Ping..
Download..
Upload..

Если забирать данные $temp = exec('speedtest-cli --simple | grep "Download" | awk \'{print $2}\'');, то записывается только параметр Download. Не запускать же утилиту три раза для получения остальных параметров. Вот я и спрашиваю, как оформить скрипт, чтобы все данные падали в нужные мне свойства.

$temp = exec('speedtest-cli --simple >/tmp/speedtest.txt'); и вот так попробовал, но разобрать текстовый файл не получается (мозгов не хватает). Помогите разобраться, чтоб, в будущем, вопросов не появлялось больше!
Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

Re: Как получить скорость интернета?

Сообщение savenko_egor » Пн июн 04, 2018 10:05 am

Вот Вам полный скрипт: https://pastebin.com/Tq1g5GD5
Запускаю его раз в час.
За это сообщение автора savenko_egor поблагодарил:
EvgenyG (Пн дек 24, 2018 12:38 pm)
Рейтинг: 1.16%
Alexiy2
Сообщения: 104
Зарегистрирован: Вт май 12, 2015 9:59 pm
Благодарил (а): 16 раз
Поблагодарили: 13 раз

Re: Как получить скорость интернета?

Сообщение Alexiy2 » Пн июн 04, 2018 10:29 am

На сколько я понимаю, то данный скрипт два раза запускает утилиту speedtest, один раз для download, второй для upload??? Или я ошибаюсь???
Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

Re: Как получить скорость интернета?

Сообщение savenko_egor » Пн июн 04, 2018 10:38 am

Всё верно. Но он 2 раза прогоняет как Download, так и Upload. Можно поправить так, чтобы он один раз только прогонял, но мне пока лень, а оно и так работает)
Alexiy2
Сообщения: 104
Зарегистрирован: Вт май 12, 2015 9:59 pm
Благодарил (а): 16 раз
Поблагодарили: 13 раз

Re: Как получить скорость интернета?

Сообщение Alexiy2 » Пн июн 04, 2018 10:50 am

Вот как раз то я и бьюсь, чтоб с первого раза забирала система данные. А то получается, что у меня все три раза прогоняет... Может кто нибудь знает как сотворить чудо???
Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

Re: Как получить скорость интернета?

Сообщение savenko_egor » Пн июн 04, 2018 11:29 am

Таки заставили меня написать :D
На скорую руку так:

Код: Выделить всё

exec('speedtest-cli --share --simple', $speed_string);
preg_match('/Download: (.*) Mbit\/s/', $speed_string[1], $downloadspeed);
preg_match('/Upload: (.*) Mbit\/s/', $speed_string[2], $uploadspeed);
preg_match('/Share results: (.*)/', $speed_string[3], $imagespeed);
Корректнее конечно загнать в цикл обработку полученного массива, но сделал на скорую руку код, который работает и даёт нужный результат.
За это сообщение автора savenko_egor поблагодарили (всего 2):
skysilver (Пн июн 04, 2018 11:55 am) • EvgenyG (Пн дек 24, 2018 12:38 pm)
Рейтинг: 2.33%
Alexiy2
Сообщения: 104
Зарегистрирован: Вт май 12, 2015 9:59 pm
Благодарил (а): 16 раз
Поблагодарили: 13 раз

Re: Как получить скорость интернета?

Сообщение Alexiy2 » Пн июн 04, 2018 3:17 pm

savenko_egor писал(а):
Пн июн 04, 2018 11:29 am
Таки заставили меня написать :D
На скорую руку так:

Код: Выделить всё

exec('speedtest-cli --share --simple', $speed_string);
preg_match('/Download: (.*) Mbit\/s/', $speed_string[1], $downloadspeed);
preg_match('/Upload: (.*) Mbit\/s/', $speed_string[2], $uploadspeed);
preg_match('/Share results: (.*)/', $speed_string[3], $imagespeed);
Корректнее конечно загнать в цикл обработку полученного массива, но сделал на скорую руку код, который работает и даёт нужный результат.
Премного Уважаемый Егор!!! Бьюсь с этим кодом и ни чего не получается!!! Может вы посмотрите в чем дело???

Код: Выделить всё

exec('speedtest-cli --share --simple', $speed_string);
preg_match('/Download: (.*) Mbit\/s/', $speed_string[1], $downloadspeed);
preg_match('/Upload: (.*) Mbit\/s/', $speed_string[2], $uploadspeed);
//preg_match('/Share results: (.*)/', $speed_string[3], $imagespeed);
setGlobal('ThisComputer.SpeedDownload',$downloadspeed);
setGlobal('ThisComputer.SpeedUpload',$uploadspeed);  

В результат вместо данных записывается ARRAY
Заранее благодарен за вашу помощь!!!
Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

Re: Как получить скорость интернета?

Сообщение savenko_egor » Пн июн 04, 2018 3:35 pm

Код: Выделить всё

exec('speedtest-cli --share --simple', $speed_string);
preg_match('/Download: (.*) Mbit\/s/', $speed_string[1], $downloadspeed);
preg_match('/Upload: (.*) Mbit\/s/', $speed_string[2], $uploadspeed);
//preg_match('/Share results: (.*)/', $speed_string[3], $imagespeed);
setGlobal('ThisComputer.SpeedDownload',$downloadspeed[1]);
setGlobal('ThisComputer.SpeedUpload',$uploadspeed[1]);  
Говорю же на скорую руку делал. И нужно было парсить массив который хранится в переменной.
За это сообщение автора savenko_egor поблагодарил:
EvgenyG (Чт дек 20, 2018 6:16 pm)
Рейтинг: 1.16%
Ответить