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

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

Добавлено: Чт мар 12, 2015 4:17 am
kylich
где-то можно настроить интервал(паузу между заданиями) с которым будут выполняться задачи запущенные с помощью safe_exec ? работаю с noolite. Если в короткий промежуток запустить несколько заданий то часть из них просто не отработает, т.к. usb брелок занят предыдущей задачей. Поэтому хочу задать минимальный интервал между заданиями safe_exec.

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

Добавлено: Чт мар 12, 2015 6:19 am
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);

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

Добавлено: Чт мар 12, 2015 10:09 am
Amarok
А разве sleep не "усыпляет" ВСЮ систему?

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

Добавлено: Чт мар 12, 2015 10:36 am
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);
} 
Смысл такой -- если последний раз команда запускалась давно (больше секунды назад), то выполнять её сразу. Если недавно, то планировать на будущее.

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

Добавлено: Чт мар 12, 2015 2:00 pm
kylich
Спасибо. Переделаю метод по вашему образу.