очередь заданий.

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

Модератор: immortal

Ответить
kylich
Сообщения: 16
Зарегистрирован: Ср ноя 13, 2013 9:46 pm

очередь заданий.

Сообщение kylich »

где-то можно настроить интервал(паузу между заданиями) с которым будут выполняться задачи запущенные с помощью safe_exec ? работаю с noolite. Если в короткий промежуток запустить несколько заданий то часть из них просто не отработает, т.к. usb брелок занят предыдущей задачей. Поэтому хочу задать минимальный интервал между заданиями safe_exec.
I_I_Imonder
Сообщения: 256
Зарегистрирован: Сб янв 11, 2014 2:54 pm

Re: очередь заданий.

Сообщение I_I_Imonder »

используйте sleep
вот мой скрипт выключения всего освещения

safe_exec('"c:\Program Files\nooLite\noolite.exe" -api -off_ch1');
sg('bedroom.status',0);
sleep(1);
safe_exec('"c:\Program Files\nooLite\noolite.exe" -api -off_ch2');
sg('bedroom_rgb.status',0);
sleep(1);
safe_exec('"c:\Program Files\nooLite\noolite.exe" -api -off_ch3');
sg('Kabinet.status',0);
sleep(1);
safe_exec('"c:\Program Files\nooLite\noolite.exe" -api -off_ch4');
sg('Kitchen.status',0);
sleep(1);
safe_exec('"c:\Program Files\nooLite\noolite.exe" -api -off_ch5');
sg('Priho.status',0);
Аватара пользователя
Amarok
Сообщения: 1434
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Контактная информация:

Re: очередь заданий.

Сообщение Amarok »

А разве sleep не "усыпляет" ВСЮ систему?
Моя Алиска живёт на Proxmox в Debian 12
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Контактная информация:

Re: очередь заданий.

Сообщение sergejey »

посмотрите у меня в коннекте в классах Relays -> Noolite -> метод sendCommand

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

$cmdline='"c:\Program Files\nooLite\nooLiteCMD.exe" -api '.$params['command'];
$last_called=gg('NoolightCommandSend');
$min_delay=1;
$now=time();
if (($now-$last_called)>$min_delay) {
 $last_callled=$now; 
 sg('NoolightCommandSend',$last_called);
 DebMes("Noolite instant exec: ".$cmdline);
 system($cmdline);
} else {
 if ($last_callled<$now) {
  $last_callled=$now;
 }
 $last_called+=$min_delay;
 sg('NoolightCommandSend',$last_called);
 AddScheduledJob("noolight".md5($cmdline),"safe_exec('".$cmdline."');",$last_called);
} 
Смысл такой -- если последний раз команда запускалась давно (больше секунды назад), то выполнять её сразу. Если недавно, то планировать на будущее.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
kylich
Сообщения: 16
Зарегистрирован: Ср ноя 13, 2013 9:46 pm

Re: очередь заданий.

Сообщение kylich »

Спасибо. Переделаю метод по вашему образу.
Ответить