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

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

Модератор: immortal

Ответить
kylich
Сообщения: 16
Зарегистрирован: Ср ноя 13, 2013 9:46 pm
Благодарил (а): 5 раз
Поблагодарили: 0

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

Сообщение kylich » Чт мар 12, 2015 4:17 am

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

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

Сообщение I_I_Imonder » Чт мар 12, 2015 6:19 am

используйте 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
Сообщения: 1427
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

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

Сообщение Amarok » Чт мар 12, 2015 10:09 am

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

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

Сообщение sergejey » Чт мар 12, 2015 10:36 am

посмотрите у меня в коннекте в классах 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);
} 
Смысл такой -- если последний раз команда запускалась давно (больше секунды назад), то выполнять её сразу. Если недавно, то планировать на будущее.
За это сообщение автора sergejey поблагодарил:
kylich (Чт мар 12, 2015 2:01 pm)
Рейтинг: 1.16%

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

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

Сообщение kylich » Чт мар 12, 2015 2:00 pm

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