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

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Аватара пользователя
Lerych
Сообщения: 191
Зарегистрирован: Чт дек 14, 2017 8:46 pm
Откуда: Московская область, Серпухов
Благодарил (а): 79 раз
Поблагодарили: 24 раза

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

Сообщение Lerych » Ср мар 20, 2019 8:19 pm

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

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

Сообщение Lerych » Ср мар 20, 2019 11:45 pm

Братцы! Что с Форумом? Второй день задаю вопросы, ответов - ноль! Перевелись ГУРУ?
Ладно я не в обиде :) У всех свои дела могут быть.
Сам раскопал по первому вопросу:
Отключаем 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"));
Внимание! Сохраните копии этих файлов до изменений и после изменений, чтобы в случае обновления системы МД не править их снова.
За это сообщение автора Lerych поблагодарил:
tarasfrompir (Чт мар 21, 2019 8:38 am)
Рейтинг: 1.16%
Аватара пользователя
Lerych
Сообщения: 191
Зарегистрирован: Чт дек 14, 2017 8:46 pm
Откуда: Московская область, Серпухов
Благодарил (а): 79 раз
Поблагодарили: 24 раза

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

Сообщение 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");
?>

Данный код позволяет дать понять самым разным браузерам, что кэшировать данную страницу нельзя. Таким образом, теперь при каждом обновлении все изменения будут браузерами отображены. Но обратите внимание, если Ваш сайт обновляется не каждую минуту, то отключать кэширование не стоит, так как из-за этого скорость загрузки страниц резко сократится.
Только куда его вставить не пойму, надо чтобы этот код был только на определенных страницах (сценах). Есть соображения?
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

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

Сообщение 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");
?>

Данный код позволяет дать понять самым разным браузерам, что кэшировать данную страницу нельзя. Таким образом, теперь при каждом обновлении все изменения будут браузерами отображены. Но обратите внимание, если Ваш сайт обновляется не каждую минуту, то отключать кэширование не стоит, так как из-за этого скорость загрузки страниц резко сократится.
Только куда его вставить не пойму, надо чтобы этот код был только на определенных страницах (сценах). Есть соображения?
Посмотри в сторону отключения кеширования в самом браузере - мож проще будет... :?:
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
Lerych
Сообщения: 191
Зарегистрирован: Чт дек 14, 2017 8:46 pm
Откуда: Московская область, Серпухов
Благодарил (а): 79 раз
Поблагодарили: 24 раза

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

Сообщение Lerych » Чт мар 21, 2019 6:34 pm

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 предлагает альтернативу в виде Режима инкогнито. Разумеется, это решение устраивает не всех.
А мне как раз в Хроме надо отключить. Может в основной шаблон вставить?
Logrus
Сообщения: 2084
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

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

Сообщение Logrus » Чт мар 21, 2019 6:39 pm

Lerych писал(а):
Ср мар 20, 2019 11:45 pm
Братцы! Что с Форумом? Второй день задаю вопросы, ответов - ноль! Перевелись ГУРУ?
Ладно я не в обиде :) У всех свои дела могут быть.
переписываешь ПУ или не пользуешься ими
с таймерами, да перебор и не только с ними
Снимок.PNG
Снимок.PNG (104.87 КБ) 3980 просмотров
в каждой комнате по 2 дд, т, в, освещ + все остальное
на скрине все таймеры на текущий момент
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
Lerych
Сообщения: 191
Зарегистрирован: Чт дек 14, 2017 8:46 pm
Откуда: Московская область, Серпухов
Благодарил (а): 79 раз
Поблагодарили: 24 раза

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

Сообщение Lerych » Чт мар 21, 2019 6:52 pm

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

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

Сообщение Logrus » Чт мар 21, 2019 6:57 pm

так убери, у меня с аливе сложно, у части есть хербит, у части нет, пришлось мудрить и это в аливе заводить
зато если с чем-то что-то алиса скажет
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
nightwind
Сообщения: 333
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Благодарил (а): 28 раз
Поблагодарили: 52 раза
Контактная информация:

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

Сообщение nightwind » Чт мар 21, 2019 10:17 pm

закомментить одну строчку SetTimeOut и всего делов) в /mnt/mjrdm/var/www/modules/devices/SDevices_statusUpdated.php
я вообще удалил все инклады на эти пхпшки от простых устройств и дописал свой минимум
Аватара пользователя
Lerych
Сообщения: 191
Зарегистрирован: Чт дек 14, 2017 8:46 pm
Откуда: Московская область, Серпухов
Благодарил (а): 79 раз
Поблагодарили: 24 раза

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

Сообщение Lerych » Чт мар 21, 2019 10:27 pm

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