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

Варианты не повесить систему через sleep()?

Добавлено: Ср июл 03, 2019 7:34 pm
SmoKE_xDDD
Привет всем!
Пишу поведение для выключателя Xiaomi и задался вопросом:
есть тестовый скрипт:

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

if($click == 'dual_long_both_click') {
 	//Запускаем бесконечный цикл
 	$count = 10;
 	while(true) {
     	sg('TVLGBigRoom.notification', 'Выключим все приборы через '.$count.' секунд...');
    	$count--;
     	sleep('1');
     	if($count == 0) break;
    }
 	sg('ledStripBedroom.power', '0');
 	sleep('3');
 	sg('BedroomLight.chanel_1', '0');
 	sleep('3');
    sg('BedroomLight.chanel_2', '0');
 	sleep('3');
 	sg('TVLGBigRoom.power', '0');
}
Так вот, всем известно, что sleep() "вещает" компилятор и тот послушно ждет и между делом ждут все жильцы квартиры, т.к. все выключатели в квартире беспроводные :)
Какие аналоги можете порекомендовать?
Понимаю, что можно заюзать AJAX, но блин как не хочется городить "мильон" сценариев и тонну кода для 6 реле и 8 выключателей... А еще ведь есть датчики движения...

Re: Варианты не повесить систему через sleep()?

Добавлено: Ср июл 03, 2019 7:41 pm
skysilver
1. В МДМ для этого есть таймеры - функция setTimeOut.
2. Для запуска чего-то относительно долгого в фоновом процессе используются runScriptSafe или callMethodSafe.

Re: Варианты не повесить систему через sleep()?

Добавлено: Ср июл 03, 2019 8:24 pm
tarasfrompir
Единственное слип не страшен (а может даже полезен) если у тебя отдельный цикл.
Но это так к сведению....

Re: Варианты не повесить систему через sleep()?

Добавлено: Ср июл 03, 2019 8:58 pm
SmoKE_xDDD
tarasfrompir писал(а):
Ср июл 03, 2019 8:24 pm
Единственное слип не страшен (а может даже полезен) если у тебя отдельный цикл.
Но это так к сведению....
Что значит отдельный цикл?)

Re: Варианты не повесить систему через sleep()?

Добавлено: Ср июл 03, 2019 9:03 pm
tarasfrompir
SmoKE_xDDD писал(а):
Ср июл 03, 2019 8:58 pm
tarasfrompir писал(а):
Ср июл 03, 2019 8:24 pm
Единственное слип не страшен (а может даже полезен) если у тебя отдельный цикл.
Но это так к сведению....
Что значит отдельный цикл?)
https://kb.mjdm.ru/?s=%D1%86%D0%B8%D0%BA%D0%BB