Страница 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% попадание в молоко
Ни один из этих классов не использую
Для остальных на примере этих перепиливать? И менять надо, похоже, именно код (вливая в гит), а не переписывать методы?
В шаблон нужного класса:
Код: Выделить всё
<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>