Страница 11 из 20

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

Добавлено: Ср фев 10, 2021 11:36 pm
Logrus
Strangeman писал(а):
Ср фев 10, 2021 11:07 pm
Кстати, UpdatedText - это хорошо, но есть ещё один момент - для каждого значения с некоторых пор пишется источник. Это удобно при отладке, но дополнительно грузит БД.
у меня не пишет, если сам в соурс не пишу ;)

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

Добавлено: Чт фев 11, 2021 1:42 am
Strangeman
Logrus писал(а):
Ср фев 10, 2021 11:36 pm
Strangeman писал(а):
Ср фев 10, 2021 11:07 pm
Кстати, UpdatedText - это хорошо, но есть ещё один момент - для каждого значения с некоторых пор пишется источник. Это удобно при отладке, но дополнительно грузит БД.
у меня не пишет, если сам в соурс не пишу ;)
Хорошо бы сделать это в виде настройки для простых пользователей.
Вы нигде не описывали, как убрали запись?

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

Добавлено: Чт фев 11, 2021 9:23 am
Logrus
в тлг обсуждали, а настройка это лишний запрос к бд или дефайном, но конфиг и так большой

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

Добавлено: Чт фев 11, 2021 9:24 am
Andyross79
И еще один момент - есть свойства, которые устанавливаются один раз и больше не меняются, но чтобы их значение взять, нужно дергать БД.
Например, у меня есть класс счетчика тока и 3 объекта. 2 генератора и один батарея, есть свойство IsBattery - оно нужно для корректировки логики в расчетах. Сам расчет в общем-то общий для всех трех, но есть корректировочка для батареи. Сейчас это минимум, 1 лишний запрос раз в секунду. Делать для каждого объекта свой класс - но тогда управляемость изменениями снижается.. Хотя, оптимизированный на производительность код никогда не был удобочитаемым.

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

Добавлено: Чт фев 11, 2021 9:26 am
Logrus
Andyross79 писал(а):
Чт фев 11, 2021 9:24 am
И еще один момент - есть свойства, которые устанавливаются один раз и больше не меняются, но чтобы их значение взять, нужно дергать БД.
Например, у меня есть класс счетчика тока и 3 объекта. 2 генератора и один батарея, есть свойство IsBattery - оно нужно для корректировки логики в расчетах. Сам расчет в общем-то общий для всех трех, но есть корректировочка для батареи. Сейчас это минимум, 1 лишний запрос раз в секунду. Делать для каждого объекта свой класс - но тогда управляемость изменениями снижается.. Хотя, оптимизированный на производительность код никогда не был удобочитаемым.
они в кеш_валюес попадают, она в памяти и читаются от туда

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

Добавлено: Чт фев 11, 2021 9:49 am
Andyross79
Logrus писал(а):
Чт фев 11, 2021 9:26 am
они в кеш_валюес попадают, она в памяти и читаются от туда
Очень извиняюсь за возможно, профанский вопрос, но где про это почитать можно? А то все тайные знания только из форума получаются :( В базе знаний поиск ничего не дает..

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

Добавлено: Чт фев 11, 2021 9:52 am
skysilver
Logrus писал(а):
Чт фев 11, 2021 9:26 am
они в кеш_валюес попадают, она в памяти и читаются от туда
Но в любом случае это запрос к БД. И скорее всего пара-тройка минимум, чтобы достать значение одного свойства. ;)

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

Добавлено: Чт фев 11, 2021 10:50 am
Logrus
skysilver писал(а):
Чт фев 11, 2021 9:52 am
Logrus писал(а):
Чт фев 11, 2021 9:26 am
они в кеш_валюес попадают, она в памяти и читаются от туда
Но в любом случае это запрос к БД. И скорее всего пара-тройка минимум, чтобы достать значение одного свойства. ;)
так и есть и через редис аналогично, только без чтения из таблички
но оно вполне быстро же

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

Добавлено: Чт фев 11, 2021 11:09 am
Logrus
Andyross79 писал(а):
Чт фев 11, 2021 9:24 am
И еще один момент - есть свойства, которые устанавливаются один раз и больше не меняются, но чтобы их значение взять, нужно дергать БД.
Например, у меня есть класс счетчика тока и 3 объекта. 2 генератора и один батарея, есть свойство IsBattery - оно нужно для корректировки логики в расчетах. Сам расчет в общем-то общий для всех трех, но есть корректировочка для батареи. Сейчас это минимум, 1 лишний запрос раз в секунду. Делать для каждого объекта свой класс - но тогда управляемость изменениями снижается.. Хотя, оптимизированный на производительность код никогда не был удобочитаемым.
насчет счетчика так реализаций может быть так много, что без конкретных примеров и необходимого тз и не о чем вести речь

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

Добавлено: Чт фев 11, 2021 2:52 pm
SmoKE_xDDD
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>