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

как сбросить таймер

Добавлено: Сб окт 03, 2020 10:53 am
vitosmaxim80sad145
есть у меня такой код ,гдето взял на форуме

//напомним вынести мусор
$h=gg('ThisComputer.timeNow');
$tasc=gg('Musor.late');

if (($h>=7) && $tasc="1") {
ClearTimeOut("HomeTasks"); // очищаем таймер (чтобы случайно две копии не запустить)
say(getRandomLine('Musor'),2);
setTimeOut("HomeTasks","say(getRandomLine('Musor'),2);",30*60);// ставим таймер на запуск самого себя через 45 минут
} elseif(($h>=16) || $tasc="0") {
ClearTimeOut("HomeTasks");
}

но при изминении свойстиа Musor.late с1 на 0 таймер всеравно продолжает работать до заданого времени ,проговаривает текст и лиш затм сбрасуется , как поправить чтобы он сбрасывался сразу по изминению свойства и как вставит say на сброс таймера , если вставить после
elseif(($h>=16) || $tasc="0") {
ClearTimeOut("HomeTasks"); то он будет говорить каждый день в 16 00 как ето избежать

Re: как сбросить таймер

Добавлено: Вт окт 06, 2020 11:09 am
JackOfShadows
459 просмотров, прикольно.

Почему бы не проверять значение Musor.late перед say внутри setTimeOut?

Проговаривание на сброс - проверяйте, через timeOutExists, есть ли таймер. Если есть - проговариваете и сбрасываете.

Re: как сбросить таймер

Добавлено: Чт окт 08, 2020 11:15 am
vitosmaxim80sad145
JackOfShadows писал(а):
Вт окт 06, 2020 11:09 am
459 просмотров, прикольно.

Почему бы не проверять значение Musor.late перед say внутри setTimeOut?

Проговаривание на сброс - проверяйте, через timeOutExists , есть ли таймер. Если есть - проговариваете и сбрасываете.
Спасибо что отозвались ,но я немного непонял
Почему бы не проверять значение Musor.late перед say внутри setTimeOut? Я ведь вначале проверяю если время и статус 1 то запустить таймер ,вроде все правельно-как вы советуете проверить ещё ? А timeOutExists вставить вместо клин таймер и добавить сей ? Но снова же непойму почему у меня таймер не сбрасует по изменению статуса ?За ранее спасибо

Re: как сбросить таймер

Добавлено: Пт окт 09, 2020 4:57 pm
JackOfShadows
vitosmaxim80sad145 писал(а):
Чт окт 08, 2020 11:15 am
Спасибо что отозвались ,но я немного непонял
Почему бы не проверять значение Musor.late перед say внутри setTimeOut? Я ведь вначале проверяю если время и статус 1 то запустить таймер ,вроде все правельно-как вы советуете проверить ещё ?
Вы проверяете, что время позже 7 утра и задача есть, говорите "выбросить" и заводите таймаут на час. Если мусор в течение этого часа выбросится - таймер всё равно сработает, его же никто не сбрасывает. Я добавляю проверку перед say в таймере. Ну или можно ловить изменение Musor.late и сбрасывать таймер там - но тогда обработка будеи в двух местах, смотрите сами.
А timeOutExists вставить вместо клин таймер и добавить сей ? Но снова же непойму почему у меня таймер не сбрасует по изменению статуса
Потому что Вы не обрабатываете изменение статуса.



Вот как-то так - смотрите мои комментарии (я не проверял).

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

$h=gg('ThisComputer.timeNow');
$tasc=gg('Musor.late');

if (($h>=7) && $tasc="1") {
  ClearTimeOut("HomeTasks");
  say(getRandomLine('Musor'),2);
  setTimeOut("HomeTasks","if(gg('Musor.late')='1') {say(getRandomLine('Musor'),2);}",30*60); // повторно проверяем gg('Musor.late')
} elseif(($h>=16) || $tasc="0") {
  if(timeOutExists("HomeTasks")!=0) {  // проверяем наличие таймера
    say('Очищаем таймер');
    ClearTimeOut("HomeTasks");
  }
}

Re: как сбросить таймер

Добавлено: Пт окт 09, 2020 11:08 pm
JackOfShadows
Этот код у Вас на чём висит? OnNewHour?

Re: как сбросить таймер

Добавлено: Вт окт 27, 2020 7:59 am
JackOfShadows
Как Ваши успехи?

Re: как сбросить таймер

Добавлено: Чт ноя 19, 2020 12:35 pm
vitosmaxim80sad145
JackOfShadows писал(а):
Пт окт 09, 2020 11:08 pm
Этот код у Вас на чём висит? OnNewHour?
спасибо за помощь долго не отвечал не было времени , я все делал как здесь https://www.youtube.com/watch?v=BTjXItZpkgo только лобавил метод say_tasks но если ставлю запуск метода при изменении свойства late то метод срабатывает и при 1 и при 0 то есть если сбрасываешь вручную то метод тоже отрабатывает и говорит что нужно вынести
и второе если код setTimeOut("HomeTasks","say(getRandomLine('Musor'),2);",30*60); то по окончанию таймера говорит а с вашим кодом setTimeOut("HomeTasks","if(gg('Musor.late')='1') {say(getRandomLine('Musor'),2);}",30*60); нет хотя и свойство равно 1 в итоге я сделала все через cron

Re: как сбросить таймер

Добавлено: Пт дек 25, 2020 9:15 am
timurufa86
vitosmaxim80sad145 писал(а):
Чт ноя 19, 2020 12:35 pm
JackOfShadows писал(а):
Пт окт 09, 2020 11:08 pm
Этот код у Вас на чём висит? OnNewHour?
спасибо за помощь долго не отвечал не было времени , я все делал как здесь https://www.youtube.com/watch?v=BTjXItZpkgo только лобавил метод say_tasks но если ставлю запуск метода при изменении свойства late то метод срабатывает и при 1 и при 0 то есть если сбрасываешь вручную то метод тоже отрабатывает и говорит что нужно вынести
и второе если код setTimeOut("HomeTasks","say(getRandomLine('Musor'),2);",30*60); то по окончанию таймера говорит а с вашим кодом setTimeOut("HomeTasks","if(gg('Musor.late')='1') {say(getRandomLine('Musor'),2);}",30*60); нет хотя и свойство равно 1 в итоге я сделала все через cron
должно быть "if(gg('Musor.late')=='1') (два знака равенства) вы же сравниваете а не присваиваете

Re: как сбросить таймер

Добавлено: Сб дек 26, 2020 9:20 pm
JackOfShadows
timurufa86 писал(а):
Пт дек 25, 2020 9:15 am
должно быть "if(gg('Musor.late')=='1') (два знака равенства) вы же сравниваете а не присваиваете
Точно, спасибо.