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

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

Модератор: immortal

Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

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

Сообщение Logrus » Ср фев 10, 2021 11:36 pm

Strangeman писал(а):
Ср фев 10, 2021 11:07 pm
Кстати, UpdatedText - это хорошо, но есть ещё один момент - для каждого значения с некоторых пор пишется источник. Это удобно при отладке, но дополнительно грузит БД.
у меня не пишет, если сам в соурс не пишу ;)
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
Strangeman
Сообщения: 208
Зарегистрирован: Ср янв 16, 2013 6:35 pm
Откуда: Золотарево
Благодарил (а): 101 раз
Поблагодарили: 19 раз
Контактная информация:

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

Сообщение Strangeman » Чт фев 11, 2021 1:42 am

Logrus писал(а):
Ср фев 10, 2021 11:36 pm
Strangeman писал(а):
Ср фев 10, 2021 11:07 pm
Кстати, UpdatedText - это хорошо, но есть ещё один момент - для каждого значения с некоторых пор пишется источник. Это удобно при отладке, но дополнительно грузит БД.
у меня не пишет, если сам в соурс не пишу ;)
Хорошо бы сделать это в виде настройки для простых пользователей.
Вы нигде не описывали, как убрали запись?
Основной: Z99Le, Debian 10, модули на ESP-12F с собственной логикой. С сервером связаны, но работоспособны и без него.
Тестовый: Cubieboard2, Armbian Buster (сейчас Bionic) 5.4.y
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

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

Сообщение Logrus » Чт фев 11, 2021 9:23 am

в тлг обсуждали, а настройка это лишний запрос к бд или дефайном, но конфиг и так большой
Последний раз редактировалось Logrus Чт фев 11, 2021 9:24 am, всего редактировалось 1 раз.
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Andyross79
Сообщения: 21
Зарегистрирован: Вт сен 03, 2019 7:17 am
Благодарил (а): 9 раз
Поблагодарили: 2 раза

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

Сообщение Andyross79 » Чт фев 11, 2021 9:24 am

И еще один момент - есть свойства, которые устанавливаются один раз и больше не меняются, но чтобы их значение взять, нужно дергать БД.
Например, у меня есть класс счетчика тока и 3 объекта. 2 генератора и один батарея, есть свойство IsBattery - оно нужно для корректировки логики в расчетах. Сам расчет в общем-то общий для всех трех, но есть корректировочка для батареи. Сейчас это минимум, 1 лишний запрос раз в секунду. Делать для каждого объекта свой класс - но тогда управляемость изменениями снижается.. Хотя, оптимизированный на производительность код никогда не был удобочитаемым.
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

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

Сообщение Logrus » Чт фев 11, 2021 9:26 am

Andyross79 писал(а):
Чт фев 11, 2021 9:24 am
И еще один момент - есть свойства, которые устанавливаются один раз и больше не меняются, но чтобы их значение взять, нужно дергать БД.
Например, у меня есть класс счетчика тока и 3 объекта. 2 генератора и один батарея, есть свойство IsBattery - оно нужно для корректировки логики в расчетах. Сам расчет в общем-то общий для всех трех, но есть корректировочка для батареи. Сейчас это минимум, 1 лишний запрос раз в секунду. Делать для каждого объекта свой класс - но тогда управляемость изменениями снижается.. Хотя, оптимизированный на производительность код никогда не был удобочитаемым.
они в кеш_валюес попадают, она в памяти и читаются от туда
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Andyross79
Сообщения: 21
Зарегистрирован: Вт сен 03, 2019 7:17 am
Благодарил (а): 9 раз
Поблагодарили: 2 раза

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

Сообщение Andyross79 » Чт фев 11, 2021 9:49 am

Logrus писал(а):
Чт фев 11, 2021 9:26 am
они в кеш_валюес попадают, она в памяти и читаются от туда
Очень извиняюсь за возможно, профанский вопрос, но где про это почитать можно? А то все тайные знания только из форума получаются :( В базе знаний поиск ничего не дает..
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

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

Сообщение skysilver » Чт фев 11, 2021 9:52 am

Logrus писал(а):
Чт фев 11, 2021 9:26 am
они в кеш_валюес попадают, она в памяти и читаются от туда
Но в любом случае это запрос к БД. И скорее всего пара-тройка минимум, чтобы достать значение одного свойства. ;)
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

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

Сообщение Logrus » Чт фев 11, 2021 10:50 am

skysilver писал(а):
Чт фев 11, 2021 9:52 am
Logrus писал(а):
Чт фев 11, 2021 9:26 am
они в кеш_валюес попадают, она в памяти и читаются от туда
Но в любом случае это запрос к БД. И скорее всего пара-тройка минимум, чтобы достать значение одного свойства. ;)
так и есть и через редис аналогично, только без чтения из таблички
но оно вполне быстро же
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

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

Сообщение Logrus » Чт фев 11, 2021 11:09 am

Andyross79 писал(а):
Чт фев 11, 2021 9:24 am
И еще один момент - есть свойства, которые устанавливаются один раз и больше не меняются, но чтобы их значение взять, нужно дергать БД.
Например, у меня есть класс счетчика тока и 3 объекта. 2 генератора и один батарея, есть свойство IsBattery - оно нужно для корректировки логики в расчетах. Сам расчет в общем-то общий для всех трех, но есть корректировочка для батареи. Сейчас это минимум, 1 лишний запрос раз в секунду. Делать для каждого объекта свой класс - но тогда управляемость изменениями снижается.. Хотя, оптимизированный на производительность код никогда не был удобочитаемым.
насчет счетчика так реализаций может быть так много, что без конкретных примеров и необходимого тз и не о чем вести речь
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
SmoKE_xDDD
Сообщения: 816
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород
Благодарил (а): 110 раз
Поблагодарили: 898 раз

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

Сообщение SmoKE_xDDD » Чт фев 11, 2021 2:52 pm

Andyross79 писал(а):
Ср фев 10, 2021 10:28 pm
SmoKE_xDDD писал(а):
Ср фев 10, 2021 9:38 pm
Залили в альфу
Правильно понимаю, что поменялись только классы SLeak, SMotions, SOpeClose, SOpenable, SSmoke?
У меня 100% попадание в молоко :) Ни один из этих классов не использую :lol:
Для остальных на примере этих перепиливать? И менять надо, похоже, именно код (вливая в гит), а не переписывать методы?
В шаблон нужного класса:

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

<script>
$(function() {
  if(window.intervalUpdateDatedevice_%.object_id%) {
    window.clearInterval(intervalUpdateDatedevice_%.object_id%);
  }
  
  var currentTime = parseInt(new Date().getTime()/1000);
  var sID = '%.object_id%';
  var sDATA = '%.updated%';
  var diff = currentTime-sDATA;

  if(diff <= -21) {
    beautyText = '<#LANG_DEVICES_PASSED_INCORRECT_TIME#>';
    $('.device-updatedText-JS-' + sID).text(beautyText);
  } else if(diff >= -20 && diff <= 0) {
    beautyText = '<#LANG_DEVICES_PASSED_NOW#>';
    $('.device-updatedText-JS-' + sID).text(beautyText);
  } else if(diff > 0 && diff < 3598) {
    beautyText = secondsToHms(diff, '<#LANG_DEVICES_PASSED_NEW_HOURS_AGO#>', '<#LANG_DEVICES_PASSED_NEW_MINUTES_AGO#>', '<#LANG_DEVICES_PASSED_NEW_SECONDS_AGO#>') + ' <#LANG_DEVICES_PASSED_AGO#>';
    $('.device-updatedText-JS-' + sID).text(beautyText);
    
    window.intervalUpdateDatedevice_%.object_id% = setInterval(function() {
      var currentTime = parseInt(new Date().getTime()/1000);
      var sID = '%.object_id%';
      var sDATA = '%.updated%';
      var diff = currentTime-sDATA;

      beautyText = secondsToHms(diff, '<#LANG_DEVICES_PASSED_NEW_HOURS_AGO#>', '<#LANG_DEVICES_PASSED_NEW_MINUTES_AGO#>', '<#LANG_DEVICES_PASSED_NEW_SECONDS_AGO#>') + ' <#LANG_DEVICES_PASSED_AGO#>';
      $('.device-updatedText-JS-' + sID).text(beautyText);
    }, 1000);
  } else if(diff >= 3598 && diff < 86400) {
    beautyText = secondsToHms(diff, '<#LANG_DEVICES_PASSED_NEW_HOURS_AGO#>', '<#LANG_DEVICES_PASSED_NEW_MINUTES_AGO#>', '<#LANG_DEVICES_PASSED_NEW_SECONDS_AGO#>');
    $('.device-updatedText-JS-' + sID).text(beautyText);
      
    window.intervalUpdateDatedevice_%.object_id% = setInterval(function() {  
      var currentTime = parseInt(new Date().getTime()/1000);
      var sID = '%.object_id%';
      var sDATA = '%.updated%';
      var diff = currentTime-sDATA;
      
      //Считаем и делаем красиво
      beautyText = secondsToHms(diff, '<#LANG_DEVICES_PASSED_NEW_HOURS_AGO#>', '<#LANG_DEVICES_PASSED_NEW_MINUTES_AGO#>', '<#LANG_DEVICES_PASSED_NEW_SECONDS_AGO#>');
      $('.device-updatedText-JS-' + sID).text(beautyText);
    }, 61000);
  } else {
    //Дропаем интервал
    if(window.intervalUpdateDatedevice_%.object_id%) {
      window.clearInterval(intervalUpdateDatedevice_%.object_id%);
    }
    
    a = new Date(sDATA * 1000);
    currentTime = new Date();
    
    year = a.getFullYear();
    month = a.getMonth();
    date = a.getDate();
    hour = a.getHours();
    min = a.getMinutes();
    sec = a.getSeconds();

    if((currentTime.getDate() - date) == 1) {
      beautyText = '<#LANG_DEVICES_PASSED_YESTERDAY_IN#> ' + twoDigits(hour) + ':' + twoDigits(min) + ':' + twoDigits(sec);
    } else {
      beautyText = twoDigits(date) + '.' + twoDigits(month) + '.' + year + ' ' + twoDigits(hour) + ':' + twoDigits(min) + ':' + twoDigits(sec);
    }
    
    $('.device-updatedText-JS-' + sID).text(beautyText);
  }
}); 

</script>

<div class="device-widget controller loadtype_%.loadType%"
     onClick='$(".icon%.object_id%_light").addClass("pressed");
     setTimeout("$(\".icon%.object_id%_light\").removeClass(\"pressed\");",300);
     callMethod("%.object_title%.switch");
     $.get("<#ROOTHTML#>ajax/devices.html?op=clicked&object="+encodeURIComponent("%.object_title%"));'>
<div class="device-icon %.status|"off;on"% icon%.object_id%_light" id="icon%.object_id%_light" style='%.icon|"background-image:url(%.icon%)"%'></div>
<div class="device-header">%.object_description%</div>
<div class="device-updatedText-JS-%.object_id%" style="font-size: 11px;">...</div>
</div>
За это сообщение автора SmoKE_xDDD поблагодарил:
Andyross79 (Чт фев 11, 2021 3:45 pm)
Рейтинг: 1.16%
Ответить