[DASH] Количество запросов в БД

Всё, что не подходит под вышеперечисленные разделы

Модератор: immortal

Аватара пользователя
tarasfrompir
Сообщения: 3091
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 208 раз
Поблагодарили: 765 раз

Re: [DASH] Количество запросов в БД

Сообщение tarasfrompir » Вс ноя 22, 2020 6:21 pm

mab писал(а):
Вс ноя 22, 2020 6:18 pm
присоединяюсь, в телеграме очень сложно найти решение вопроса!
один раз описать в wiki или на форуме и тогда будет счастье
Там за один месяц не опишешь всего что может быть ... не то что за несколько сообщений... :?:
Начните с таймера минутного - положите сюда код для осмотра - и тогда будет колегиалное решенеие какоенить... :!:
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
mab
Сообщения: 46
Зарегистрирован: Сб янв 19, 2019 1:26 am
Благодарил (а): 5 раз
Поблагодарили: 8 раз

Re: [DASH] Количество запросов в БД

Сообщение mab » Вс ноя 22, 2020 6:34 pm

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

$h=(int)date('G',time());
$m=date('i',time());

setGlobal('timeNow',date('H:i'));

$homeStatus=date('H:i');
if (getGlobal('NobodyHomeMode.active')) {
 $homeStatus.=' Дома никого';
} else {
 $homeStatus.=' Дома кто-то есть';
}

$homeStatus.=' '.getGlobal('Security.stateDetails');
$homeStatus.=' '.getGlobal('System.stateDetails');
$homeStatus.=' '.getGlobal('Communication.stateDetails');
setGlobal('HomeStatus',$homeStatus);

if (timeBetween(getGlobal('Sun.civil_beginTime'),getGlobal('Sun.civil_endTime')) && getGlobal('isDark')=="1") {
  setGlobal("isDark",0);
  callMethod('DarknessMode.deactivate');
  setGlobal("DarknessMode.active",0);
} elseif (!timeBetween(getGlobal('Sun.civil_beginTime'),getGlobal('Sun.civil_endTime')) && getGlobal('isDark')!="1") {
  setGlobal("isDark",1);
  callMethod('DarknessMode.activate');  
  setGlobal("DarknessMode.active",1);  
}
 
if (timeIs(getGlobal('SunRiseTime'))) {
  say('Восход солнца');
}
if (timeIs(getGlobal('SunSetTime'))) {
  say('Заход солнца',2);
  runScript("StartNewYear");
}

if (timeIs(gg('NightModeStart'))) {
 callMethod('NightMode.activate');
} elseif (timeIs(gg('NightModeEnd'))) {
 callMethod('NightMode.deactivate');
}

if (timeIs("03:00")) {
 runScript("systemMaintenance");
}

//Каждые 10 минут
if ($m%10 == 0) {
	callMethod('Dom.updateActivityStatus');
}
Аватара пользователя
tarasfrompir
Сообщения: 3091
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 208 раз
Поблагодарили: 765 раз

Re: [DASH] Количество запросов в БД

Сообщение tarasfrompir » Вс ноя 22, 2020 6:52 pm

начните с вот этого

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

if (timeBetween(getGlobal('Sun.civil_beginTime'),getGlobal('Sun.civil_endTime')) && getGlobal('isDark')=="1") {
  setGlobal("isDark",0);
  callMethod('DarknessMode.deactivate');
  setGlobal("DarknessMode.active",0);
getGlobal('isDark')=="1" - вот эта часть делает определенное количество запросов к базе
timeBetween(getGlobal('Sun.civil_beginTime'),getGlobal('Sun.civil_endTime')) - а вот это в два раза больше
Так может проще проверку начинать с второго елемента и выкласть это в такой редакции ???

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

if (getGlobal('isDark')=="1" && timeBetween(getGlobal('Sun.civil_beginTime'),getGlobal('Sun.civil_endTime')) ) {
  setGlobal("isDark",0);
  callMethod('DarknessMode.deactivate');
  setGlobal("DarknessMode.active",0);
теперь вопрос - у вас - если менять это - setGlobal("DarknessMode.active",0);
метод не запускается при изменении свойства ? - имею ввиду это - callMethod('DarknessMode.deactivate');
Имею ввиду что не получается у вас двойного запуска метода - DarknessMode.deactivate ???
И это вопросы только по 3 строкам ...
Неужто эти вопросы вы не можете сами решить для себя и пересмотреть свой код ???
Разбирать ваш код дальше ?
Или вы думаете что сетглобал или гетглобал не делают запросов в базу данных. А это ведь таймер ПОСТОЯННО ЗАПУСКАЕМЫЙ....!!!
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
mab
Сообщения: 46
Зарегистрирован: Сб янв 19, 2019 1:26 am
Благодарил (а): 5 раз
Поблагодарили: 8 раз

Re: [DASH] Количество запросов в БД

Сообщение mab » Вс ноя 22, 2020 7:12 pm

tarasfrompir писал(а):
Вс ноя 22, 2020 6:52 pm
Разбирать ваш код дальше ?
Или вы думаете что сетглобал или гетглобал не делают запросов в базу данных. А это ведь таймер ПОСТОЯННО ЗАПУСКАЕМЫЙ....!!!
пока достаточно, буду "причёсывать" код
Аватара пользователя
tarasfrompir
Сообщения: 3091
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 208 раз
Поблагодарили: 765 раз

Re: [DASH] Количество запросов в БД

Сообщение tarasfrompir » Вс ноя 22, 2020 7:44 pm

mab писал(а):
Вс ноя 22, 2020 7:12 pm
tarasfrompir писал(а):
Вс ноя 22, 2020 6:52 pm
Разбирать ваш код дальше ?
Или вы думаете что сетглобал или гетглобал не делают запросов в базу данных. А это ведь таймер ПОСТОЯННО ЗАПУСКАЕМЫЙ....!!!
пока достаточно, буду "причёсывать" код
Ну слава богу мы поняли друг друга- вот хвастуны у кого 25 запросов в секунду в бд - этим занимаются годами и изучают узкие места ....
Удачи в нелегком деле - вопросы приветствуются, НО по делу..
А вообще это как раз и есть оптимизация кода... Там и без ядра копать и копать....А в ядре мдм уж и подавно - поверте на слово..
НО не все так бесперспективно... :!: :!: :!:
Спасибо нам ПОМОЖЕТ..!
Logrus
Сообщения: 1753
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 295 раз
Поблагодарили: 363 раза

Re: [DASH] Количество запросов в БД

Сообщение Logrus » Вс ноя 22, 2020 7:52 pm

mab писал(а):
Вс ноя 22, 2020 7:12 pm
пока достаточно, буду "причёсывать" код

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

//$h=(int)date('G', time());
$m = date('i', time());

setGlobal('timeNow', date('H:i')); //а оно надо?

$homeStatus = date('H:i'); //повтор чч мм
//секцию ниже можно формировать по событиям
if (getGlobal('NobodyHomeMode.active')) {
 $homeStatus .= ' Дома никого';
} else {
 $homeStatus .= ' Дома кто-то есть';
}
$homeStatus .= ' ' . getGlobal('Security.stateDetails');
$homeStatus .= ' ' . getGlobal('System.stateDetails');
$homeStatus .= ' ' . getGlobal('Communication.stateDetails');
setGlobal('HomeStatus', $homeStatus);


$darkness = getGlobal('DarknessMode.active');
$sunrise = getGlobal('Sun.civil_beginTime');
$sunset = getGlobal('Sun.civil_endTime');
if ($darkness == 1 && timeBetween($sunrise, $sunset)) {
  callMethodSafe('DarknessMode.deactivate'); 
}
elseif ($darkness == 0 && timeBetween($sunset, $sunrise)) {
  callMethodSafe('DarknessMode.activate'); 
}

//вот оно надо?
if (timeIs(getGlobal('SunRiseTime'))) {
  say('Восход солнца');
}
if (timeIs(getGlobal('SunSetTime'))) {
  say('Заход солнца', 2);
  runScript("StartNewYear");
}

//а если сервер отключался на продолжительное время, то этому режиму не доверяем?
if (timeIs(gg('NightModeStart'))) {
  callMethod('NightMode.activate');
} elseif (timeIs(gg('NightModeEnd'))) {
  callMethod('NightMode.deactivate');
}

//а в часовом или суточном таймере не лучше?
if (timeIs('03:00')) {
  runScript("systemMaintenance");
}

//Каждые 10 минут
if ($m%10 == 0) {
  callMethod('Dom.updateActivityStatus'); //судя по названию странные дерганья вместо по событию
}
минутный таймер не самое страшное, системстатес раз в 5 сек., модули и правильное подключение в ПУ и т.д.
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
tarasfrompir
Сообщения: 3091
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 208 раз
Поблагодарили: 765 раз

Re: [DASH] Количество запросов в БД

Сообщение tarasfrompir » Вс ноя 22, 2020 7:56 pm

Logrus писал(а):
Вс ноя 22, 2020 7:52 pm
mab писал(а):
Вс ноя 22, 2020 7:12 pm
пока достаточно, буду "причёсывать" код

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

//$h=(int)date('G', time());
$m = date('i', time());

setGlobal('timeNow', date('H:i')); //а оно надо?

$homeStatus = date('H:i'); //повтор чч мм
//секцию ниже можно формировать по событиям
if (getGlobal('NobodyHomeMode.active')) {
 $homeStatus .= ' Дома никого';
} else {
 $homeStatus .= ' Дома кто-то есть';
}
$homeStatus .= ' ' . getGlobal('Security.stateDetails');
$homeStatus .= ' ' . getGlobal('System.stateDetails');
$homeStatus .= ' ' . getGlobal('Communication.stateDetails');
setGlobal('HomeStatus', $homeStatus);


$darkness = getGlobal('DarknessMode.active');
$sunrise = getGlobal('Sun.civil_beginTime');
$sunset = getGlobal('Sun.civil_endTime');
if ($darkness == 1 && timeBetween($sunrise, $sunset)) {
  callMethodSafe('DarknessMode.deactivate'); 
}
elseif ($darkness == 0 && timeBetween($sunset, $sunrise)) {
  callMethodSafe('DarknessMode.activate'); 
}

//вот оно надо?
if (timeIs(getGlobal('SunRiseTime'))) {
  say('Восход солнца');
}
if (timeIs(getGlobal('SunSetTime'))) {
  say('Заход солнца', 2);
  runScript("StartNewYear");
}

//а если сервер отключался на продолжительное время, то этому режиму не доверяем?
if (timeIs(gg('NightModeStart'))) {
  callMethod('NightMode.activate');
} elseif (timeIs(gg('NightModeEnd'))) {
  callMethod('NightMode.deactivate');
}

//а в часовом или суточном таймере не лучше?
if (timeIs('03:00')) {
  runScript("systemMaintenance");
}

//Каждые 10 минут
if ($m%10 == 0) {
  callMethod('Dom.updateActivityStatus'); //судя по названию странные дерганья вместо по событию
}
минутный таймер не самое страшное, системстатес раз в 5 сек., модули и правильное подключение в ПУ и т.д.
я предложил навскидку минутный таймер и показать что можно получить из того что есть....
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
mab
Сообщения: 46
Зарегистрирован: Сб янв 19, 2019 1:26 am
Благодарил (а): 5 раз
Поблагодарили: 8 раз

Re: [DASH] Количество запросов в БД

Сообщение mab » Вс ноя 22, 2020 7:58 pm

Logrus писал(а):
Вс ноя 22, 2020 7:52 pm

минутный таймер не самое страшное, системстатес раз в 5 сек., модули и правильное подключение в ПУ и т.д.
ну а с этим что не так? это же всё ставится как есть.
Logrus
Сообщения: 1753
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 295 раз
Поблагодарили: 363 раза

Re: [DASH] Количество запросов в БД

Сообщение Logrus » Вс ноя 22, 2020 8:01 pm

mab писал(а):
Вс ноя 22, 2020 7:58 pm
Logrus писал(а):
Вс ноя 22, 2020 7:52 pm

минутный таймер не самое страшное, системстатес раз в 5 сек., модули и правильное подключение в ПУ и т.д.
ну а с этим что не так? это же всё ставится как есть.
вы просили пример, я потратил время
и не надо смотреть на мдм и то что там есть более 7-ми лет как на догму ;)
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
mab
Сообщения: 46
Зарегистрирован: Сб янв 19, 2019 1:26 am
Благодарил (а): 5 раз
Поблагодарили: 8 раз

Re: [DASH] Количество запросов в БД

Сообщение mab » Вс ноя 22, 2020 11:02 pm

Еще не совсем понятно: запросы в секунду "жёлтые", в минуту - "красные", в час - "зеленые"
нестыковочка
Ответить