Страница 1 из 1

Отключение проверки Alive и setUpdatedText

Добавлено: Ср мар 20, 2019 8:19 pm
Lerych
Добрый вечер, коллеги!
Мне в проекте очень мешает постоянная проверка alive и setUpdatedText. Т.к. в проекте более 300 устройств (реле) изменение их статуса ведёт к созданию огромного количества таймеров для обновления setUpdatedText и alive. Постоянно перезагружается цикл cycle_scheduler. И хотя МД стоит на ББ с Линукс, тормоза замены. Как и где правильно отключить создание этих таймеров?
И ещё попутно вопрос: запрет кэширования для браузера можно где-то включить. Данные на некоторых сценах с большим количеством динамических элементов обновляются практически только по F5.
Спасибо.

Re: Отключение проверки Alive и setUpdatedText

Добавлено: Ср мар 20, 2019 11:45 pm
Lerych
Братцы! Что с Форумом? Второй день задаю вопросы, ответов - ноль! Перевелись ГУРУ?
Ладно я не в обиде :) У всех свои дела могут быть.
Сам раскопал по первому вопросу:
Отключаем alive у устройств в файле htdocs\modules\devices\SDevices_statusUpdated.php
Для этого комментируем строки с 13 по 21

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

<?php

$ot = $this->object_title;
$linked_room = $this->getProperty('linkedRoom');

if ($this->class_title != 'SMotions' || $params['NEW_VALUE']) {
    $tm = time();
    $this->setProperty('updated', $tm);
    $this->callMethod('setUpdatedText');
}
$this->setProperty('alive', 1);

/*
$alive_timeout = (int)$this->getProperty('aliveTimeout') * 60 * 60;
if (!$alive_timeout) {
//    $alive_timeout = 2 * 24 * 60 * 60; // 2 days alive timeout by default
	$alive_timeout = 5; // 5 sec alive timeout by default
}

setTimeout($ot . '_alive_timer', 'setGlobal("' . $ot . '.alive", 0);', $alive_timeout);
*/
$need_call_logic_action = 1;

Или строку 16 меняем на

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

//    $alive_timeout = 2 * 24 * 60 * 60; // 2 days alive timeout by default
	$alive_timeout = 5; // 5 sec alive timeout by default
	
Чтобы в свойство Объекта.updatedText писать только дату и время изменения статуса, а не только что, 10 сек. назад и т.д. в файле
htdocs\modules\devices\SDevices_setUpdatedText.php удаляем все строки кроме первой и пишем:

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

$this->setProperty("updatedText",date("d.m.y H:i:s"));
Другой способ, это в классе устройств SDevices в методе setUpdatedText закомментировать строку

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

/* begin injection of {SDevices} */
/*require(DIR_MODULES.'devices/SDevices_setUpdatedText.php');*/
/* end injection of {SDevices} */

и дописать $this->setProperty("updatedText",date("d.m.y H:i:s"));

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

/* begin injection of {SDevices} */
/*require(DIR_MODULES.'devices/SDevices_setUpdatedText.php');*/
/* end injection of {SDevices} */
$this->setProperty("updatedText",date("d.m.y H:i:s"));
Внимание! Сохраните копии этих файлов до изменений и после изменений, чтобы в случае обновления системы МД не править их снова.

Re: Отключение проверки Alive и setUpdatedText

Добавлено: Ср мар 20, 2019 11:48 pm
Lerych
По вопросу Отключения кэширования:
Из глобальной сети:
Как отключить кэширование на PHP

У браузеров есть одна очень важная возможность - это кэширование. Данная функция позволяет резко ускорить процесс загрузки страниц. Однако, иногда кэширование приносит большой вред. Например, у Вас на сайте выводятся какие-нибудь котировки валют, которые меняются постоянно. Представьте, что будет, если у пользователей страница будет в кэше, и изменений котировок они не увидят. И вот как отключить кэширование на PHP, я сейчас и напишу.

Для отключения кэширование на PHP достаточно вставить в код скрипта, который вызывается пользователем, следующие строчки:
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0,pre-check=0", false);
header("Cache-Control: max-age=0", false);
header("Pragma: no-cache");
?>

Данный код позволяет дать понять самым разным браузерам, что кэшировать данную страницу нельзя. Таким образом, теперь при каждом обновлении все изменения будут браузерами отображены. Но обратите внимание, если Ваш сайт обновляется не каждую минуту, то отключать кэширование не стоит, так как из-за этого скорость загрузки страниц резко сократится.
Только куда его вставить не пойму, надо чтобы этот код был только на определенных страницах (сценах). Есть соображения?

Re: Отключение проверки Alive и setUpdatedText

Добавлено: Чт мар 21, 2019 8:40 am
tarasfrompir
Lerych писал(а): Ср мар 20, 2019 11:48 pm По вопросу Отключения кэширования:
Из глобальной сети:
Как отключить кэширование на PHP

У браузеров есть одна очень важная возможность - это кэширование. Данная функция позволяет резко ускорить процесс загрузки страниц. Однако, иногда кэширование приносит большой вред. Например, у Вас на сайте выводятся какие-нибудь котировки валют, которые меняются постоянно. Представьте, что будет, если у пользователей страница будет в кэше, и изменений котировок они не увидят. И вот как отключить кэширование на PHP, я сейчас и напишу.

Для отключения кэширование на PHP достаточно вставить в код скрипта, который вызывается пользователем, следующие строчки:
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0,pre-check=0", false);
header("Cache-Control: max-age=0", false);
header("Pragma: no-cache");
?>

Данный код позволяет дать понять самым разным браузерам, что кэшировать данную страницу нельзя. Таким образом, теперь при каждом обновлении все изменения будут браузерами отображены. Но обратите внимание, если Ваш сайт обновляется не каждую минуту, то отключать кэширование не стоит, так как из-за этого скорость загрузки страниц резко сократится.
Только куда его вставить не пойму, надо чтобы этот код был только на определенных страницах (сценах). Есть соображения?
Посмотри в сторону отключения кеширования в самом браузере - мож проще будет... :?:

Re: Отключение проверки Alive и setUpdatedText

Добавлено: Чт мар 21, 2019 6:34 pm
Lerych
tarasfrompir писал(а): Чт мар 21, 2019 8:40 am
Lerych писал(а): Ср мар 20, 2019 11:48 pm По вопросу Отключения кэширования:
Из глобальной сети:
Как отключить кэширование на PHP

У браузеров есть одна очень важная возможность - это кэширование. Данная функция позволяет резко ускорить процесс загрузки страниц. Однако, иногда кэширование приносит большой вред. Например, у Вас на сайте выводятся какие-нибудь котировки валют, которые меняются постоянно. Представьте, что будет, если у пользователей страница будет в кэше, и изменений котировок они не увидят. И вот как отключить кэширование на PHP, я сейчас и напишу.

Для отключения кэширование на PHP достаточно вставить в код скрипта, который вызывается пользователем, следующие строчки:
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0,pre-check=0", false);
header("Cache-Control: max-age=0", false);
header("Pragma: no-cache");
?>

Данный код позволяет дать понять самым разным браузерам, что кэшировать данную страницу нельзя. Таким образом, теперь при каждом обновлении все изменения будут браузерами отображены. Но обратите внимание, если Ваш сайт обновляется не каждую минуту, то отключать кэширование не стоит, так как из-за этого скорость загрузки страниц резко сократится.
Только куда его вставить не пойму, надо чтобы этот код был только на определенных страницах (сценах). Есть соображения?
Посмотри в сторону отключения кеширования в самом браузере - мож проще будет... :?:
Из сети:
В Google, видимо, считают, что отключение кэша в Chrome среднему пользователю не нужно, потому что браузер будет сильно тормозить. Поэтому в Хроме нет функции отключения кэша, вместо этого Google предлагает альтернативу в виде Режима инкогнито. Разумеется, это решение устраивает не всех.
А мне как раз в Хроме надо отключить. Может в основной шаблон вставить?

Re: Отключение проверки Alive и setUpdatedText

Добавлено: Чт мар 21, 2019 6:39 pm
Logrus
Lerych писал(а): Ср мар 20, 2019 11:45 pm Братцы! Что с Форумом? Второй день задаю вопросы, ответов - ноль! Перевелись ГУРУ?
Ладно я не в обиде :) У всех свои дела могут быть.
переписываешь ПУ или не пользуешься ими
с таймерами, да перебор и не только с ними
Снимок.PNG
Снимок.PNG (104.87 КБ) 4566 просмотров
в каждой комнате по 2 дд, т, в, освещ + все остальное
на скрине все таймеры на текущий момент

Re: Отключение проверки Alive и setUpdatedText

Добавлено: Чт мар 21, 2019 6:52 pm
Lerych
Logrus писал(а): Чт мар 21, 2019 6:39 pm переписываешь ПУ или не пользуешься ими
с таймерами, да перебор и не только с ними
в каждой комнате по 2 дд, т, в, освещ + все остальное
на скрине все таймеры на текущий момент
Завидую, Вам. У меня в проекте 300 устройств типа реле. Вот мне совершенно не обязательно в каждое устройство писать по таймеру когда поменялось состояние, я его принудительно туда пишу при смене статуса в формате 01.01.2019 12:00. Соответственно и alive на реле мне не надо.

Re: Отключение проверки Alive и setUpdatedText

Добавлено: Чт мар 21, 2019 6:57 pm
Logrus
так убери, у меня с аливе сложно, у части есть хербит, у части нет, пришлось мудрить и это в аливе заводить
зато если с чем-то что-то алиса скажет

Re: Отключение проверки Alive и setUpdatedText

Добавлено: Чт мар 21, 2019 10:17 pm
nightwind
закомментить одну строчку SetTimeOut и всего делов) в /mnt/mjrdm/var/www/modules/devices/SDevices_statusUpdated.php
я вообще удалил все инклады на эти пхпшки от простых устройств и дописал свой минимум

Re: Отключение проверки Alive и setUpdatedText

Добавлено: Чт мар 21, 2019 10:27 pm
Lerych
nightwind писал(а): Чт мар 21, 2019 10:17 pm закомментить одну строчку SetTimeOut и всего делов) в /mnt/mjrdm/var/www/modules/devices/SDevices_statusUpdated.php
я вообще удалил все инклады на эти пхпшки от простых устройств и дописал свой минимум
Спасибо, с этим уже разобрались.