Страница 3 из 3

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

Добавлено: Пн июн 04, 2018 2:31 am
Alexiy2
Уважаемые!!! Покажите весь скрипт под Unix, а то у меня не получается забрать сразу все данные разом! Мозгов не хватает, не могу допедрить, как это вы делаете, а Коннект у вас с нулевыми значениями!

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

Добавлено: Пн июн 04, 2018 7:58 am
directman66

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

Добавлено: Пн июн 04, 2018 9:53 am
Alexiy2
Сама утилита стоит и скриптом вызывается! В ответ с ключом --simple выдает краткий отчёт с тремя строками:
Ping..
Download..
Upload..

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

$temp = exec('speedtest-cli --simple >/tmp/speedtest.txt'); и вот так попробовал, но разобрать текстовый файл не получается (мозгов не хватает). Помогите разобраться, чтоб, в будущем, вопросов не появлялось больше!

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

Добавлено: Пн июн 04, 2018 10:05 am
savenko_egor
Вот Вам полный скрипт: https://pastebin.com/Tq1g5GD5
Запускаю его раз в час.

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

Добавлено: Пн июн 04, 2018 10:29 am
Alexiy2
На сколько я понимаю, то данный скрипт два раза запускает утилиту speedtest, один раз для download, второй для upload??? Или я ошибаюсь???

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

Добавлено: Пн июн 04, 2018 10:38 am
savenko_egor
Всё верно. Но он 2 раза прогоняет как Download, так и Upload. Можно поправить так, чтобы он один раз только прогонял, но мне пока лень, а оно и так работает)

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

Добавлено: Пн июн 04, 2018 10:50 am
Alexiy2
Вот как раз то я и бьюсь, чтоб с первого раза забирала система данные. А то получается, что у меня все три раза прогоняет... Может кто нибудь знает как сотворить чудо???

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

Добавлено: Пн июн 04, 2018 11:29 am
savenko_egor
Таки заставили меня написать :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);
Корректнее конечно загнать в цикл обработку полученного массива, но сделал на скорую руку код, который работает и даёт нужный результат.

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

Добавлено: Пн июн 04, 2018 3:17 pm
Alexiy2
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
Заранее благодарен за вашу помощь!!!

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

Добавлено: Пн июн 04, 2018 3:35 pm
savenko_egor

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

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]);  
Говорю же на скорую руку делал. И нужно было парсить массив который хранится в переменной.