Страница 3 из 7
Re: Мониторинг системных ресурсов локально и через сеть
Добавлено: Чт дек 13, 2012 8:39 am
raptorialfungus
Alex писал(а):Странно как то. То висели пустые индикаторы примерно минут сорок. Сейчас посмотрел — появились цифры. Вроде правильные. ??? Ничего не менял!
Ладно, потестирую — отпишусь.
Ну, слава богу. А то я уже всю голову изломал. Собирался посоветовать переинсталлить всё.
Устройства Онлайн заработали, кстати?
К тому же
Код: Выделить всё
Warning: Invalid argument supplied for foreach() in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(130) : eval()'d code on line 4
4: foreach($item as $child) {
И штук 50 одинаковых ерроров.
Это не ерроры, а ворнинги

Re: Мониторинг системных ресурсов локально и через сеть
Добавлено: Чт дек 13, 2012 10:12 am
Alex
Ну, слава богу. А то я уже всю голову изломал. Собирался посоветовать переинсталлить всё.
Сейчас буду разбираться как это — то есть значения, то нет. Либо в коде ошибка, либо у меня рука дрогнула.
Устройства Онлайн заработали, кстати?
Эта эпическая битва нам ещё предстоит.
Это не ерроры, а ворнинги
А в чём разница? Исполнение останавливается?
Re: Мониторинг системных ресурсов локально и через сеть
Добавлено: Чт дек 13, 2012 11:11 am
raptorialfungus
Alex писал(а):Это не ерроры, а ворнинги
А в чём разница? Исполнение останавливается?
Не останавливается. Просто предупреждения. И у меня они вообще не выводятся и всё в порядке.
Re: Мониторинг системных ресурсов локально и через сеть
Добавлено: Чт дек 13, 2012 11:27 am
Alex
Протестировал. Почему не работало понять не удалось. Хотя если следовать логике то какая то причина должна быть. Сейчас работает. Возникло 2 вопроса.
Первый. Код заточен под Value. Если мне нужно Text, то я пишу вторую функцию? Если да — то всё понятно, код не нужен, если нет — напишите как надо.
Второй. Значения берутся вместе с единицами измерения, что не есть гут. Как грамотно убрать всё после цифр? Единицы измерения совсем не нужны.
Re: Мониторинг системных ресурсов локально и через сеть
Добавлено: Чт дек 13, 2012 1:26 pm
raptorialfungus
Alex писал(а):Возникло 2 вопроса.
Первый. Код заточен под Value. Если мне нужно Text, то я пишу вторую функцию? Если да — то всё понятно, код не нужен, если нет — напишите как надо.
Не, второй функции не надо. Нужна вторая временная глобальная переменная. Ей присваиваем значение того параметра сенсора, который нужен.
Вот кусочек, в котором мы нашли требуемый сенсор:
Код: Выделить всё
if (isset($child->id) && $child->id == $value) {
sg('ThisComputer.temp', $child->Value);
return;
}
Соответственно можем использовать:
$child->id, $child->Text, $child->Min, $child->Value,$child->Max,$child->ImageURL
Alex писал(а):Второй. Значения берутся вместе с единицами измерения, что не есть гут. Как грамотно убрать всё после цифр? Единицы измерения совсем не нужны.
Логичный вопрос! Я не использую эту прогу и поэтому не добил эту тему. Правильно будет прямо внутри функции всё и зачистить. Если принять во внимание, что все просмотренные мною значения отделены пробелами от единиц измерения, то тогда используем следующую конструкцию:
Код: Выделить всё
if (isset($child->id) && $child->id == $value) {
sg('ThisComputer.temp', substr($child->Value,0,strpos($child->Value,' ')));
return;
}
Находим позицию пробела в значении и вырезаем кусок строки необходимой длины.
Для других параметров меняем Value на что-то еще в двух местах.
Андрей
Re: Мониторинг системных ресурсов локально и через сеть
Добавлено: Чт дек 13, 2012 3:25 pm
Alex
raptorialfungus, спасибо, всё заработало.
Заметил один маленький момент. В MajorDoMo везде в качестве разделителя используется точка, а в OHM — запятая. И значения получаются тоже с запятыми, вместо точки. Вроде всё работает, не знаю надо ли этот момент исправлять и если надо, то как?
Ещё один теоретический вопрос. Если хочется часто получать данные (например для монитора загрузки процессора), то как часто можно делать запросы json? Что бы не перегружать компьютер и сеть? Раз в 20 сек.? В 10 сек? В 5 сек? Каков минимальный разумный интервал?
Re: Мониторинг системных ресурсов локально и через сеть
Добавлено: Чт дек 13, 2012 4:40 pm
raptorialfungus
Alex писал(а):Заметил один маленький момент. В MajorDoMo везде в качестве разделителя используется точка, а в OHM — запятая. И значения получаются тоже с запятыми, вместо точки. Вроде всё работает, не знаю надо ли этот момент исправлять и если надо, то как?
Да, наверное, лучше исправить.
Тогда обрамляем еще одной функцией:
Код: Выделить всё
sg('ThisComputer.temp', str_replace(',','.',substr($child->Value,0,strpos($child->Value,' '))));
Или правим региональные настройки в компе
Alex писал(а):Ещё один теоретический вопрос. Если хочется часто получать данные (например для монитора загрузки процессора), то как часто можно делать запросы json? Что бы не перегружать компьютер и сеть? Раз в 20 сек.? В 10 сек? В 5 сек? Каков минимальный разумный интервал?
Ответ на запрос весит всего 7 килобайт. IMHO можно хоть каждую секунду.
Кстати, наверняка, есть недокументированные возможности запросов к серверу. Типа "получить json только для определенного id". Тогда размер пакета будет в разы меньше.
P.S. Посмотрел исходники http-сервера OHM - там всё просто. Никаких параметров передавать нельзя. Всегда в ответ полный json.
Re: Мониторинг системных ресурсов локально и через сеть
Добавлено: Чт дек 13, 2012 4:55 pm
Alex
Всё ясно и понятно. Спасибо за ответы.
Re: Мониторинг системных ресурсов локально и через сеть
Добавлено: Вт янв 08, 2013 12:06 am
Alex
С рекурсивностью я не перемудрил?
А вопрос то оказывается не закрыт. Долго не мог понять почему всё работает через одно место. Выяснилось, что функция searchJson работает некорректно.
В некоторых случаях работает правильно, а в некоторых вызов функции аж выбивает из onNewMinute и всё, что ниже вызова функции вообще не исполняется. В примере номер 32 отрабатывает корректно, а номер 17 уже выбивает из onNewMinute.
RAW:
[{"id": 32, "Text": "Memory", "Children": [], "Min": "23,2 %", "Value": "26,5 %",
[{"id": 17, "Text": "CPU Fan", "Children": [], "Min": "0 RPM", "Value": "1010 RPM",
Подозреваю, что дело связано с RETURN-ом. Иначе как можно вывалиться из onNewMinute?
Код: Выделить всё
function searchJson($obj, $value){
foreach($obj as $item) {
foreach($item as $child) {
if (isset($child->id) && $child->id == $value) {
sg('ThisComputer.temp', substr($child->Value,0,strpos($child->Value,' ')));
sg('ThisComputer.tempText', $child->Text);
return;
}
searchJson($child,$value);
}
}
return;
}
$ch = curl_init('http://192.168.1.2:8085/data.json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ohm = curl_exec($ch);
$json = json_decode($ohm);
searchJson($json,'32');
sg('analog22.value',gg('ThisComputer.temp'));
searchJson($json,'17');
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// <----------- ВЫЗОВ ФУНКЦИИ ВЫБИВАЕТ ИЗ onNewMinute
// <----------- И, СООТВЕТСТВЕННО, НЕ ИСПОЛНЯЕТСЯ ВСЁ, ЧТО НИЖЕ
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
sg('analog24.value',gg('ThisComputer.temp'));
...
...
...
Re: Мониторинг системных ресурсов локально и через сеть
Добавлено: Чт янв 10, 2013 10:40 am
raptorialfungus
Alex писал(а):
Подозреваю, что дело связано с RETURN-ом. Иначе как можно вывалиться из onNewMinute?
Что-то не видно никакой взаимосвязи. Но return'ы можно вообще убрать, насколько я понимаю. При таких небольших объемах файла не должно быть серьезного падения в скорости. Но лучше, конечно, через debmes посмотреть, сколько выполняется с return и без return.
Увы, не использую сейчас OHM и нет возможности поэкспериментировать.
Андрей