функция по закрытию скрипта в определенное время

Страницы: 1
RSS
функция по закрытию скрипта в определенное время
 
Добрый день всем!
Пытаюсь передать в функцию задачу закрытия (паузы) скрипта в определенное время. Пытаюсь это сделать на в main, а в отдельной функции. Написал приложенный код - на выходе получаю какую-то ерунду (ну и скрипт не закрывается). По моей логике он должен закрыться с первого раза. Подскажите плиз в чем косяк. Вопрос я так понимаю детский.

Ну и навскидку.. будет ли работать та часть, которая закомментена (суть я думаю понятна)

буду благодарен за любые комменты

Спасибо
Код
function OnInit()
    is_run = true
    end
    
function OnStop()
    is_run = false
    return 2000
    end
    
   function CloseScript()
curr_date = os.date("*t")
    if curr_date.hour == 13 and curr_date.min >= 05 then
      message("Закрываемся")
         is_run = false
         return (500)
      --elseif curr_date.hour == 13 and curr_date.min >= 55 then
      --message("Ждем")
      --sleep(600000)
      --message("продолжаем")
      end
      return nil
end

function main()
EnterInPos = "No"
while EnterInPos == "No" do
CloseScript()
sleep (1000)
end --закрывает While

end --закрывает main fnct
 
Устанавливаете в своей функции is_run и потом нигде ее не проверяете, поэтому и не работает. Ваша задача как-то мейну сообщить, что надо выйти из цикла, а не волшебное слово is_run упомянуть.

Закомментированная часть так, как написана, работать не будет по простой причине: в первом условии, если время больше 13:05, выполнилась первая ветка, дошла до return и на этом все. Если время меньше 13:05, оно заведомо меньше и 13:55 из условия второй ветки, поэтому вторая ветка не выполнится никогда. А если бы выполнилась, подвесила бы скрипт на 10 минут, так не стоит делать, хотя и не смертный грех.
 
Цитата
Anton написал:
Устанавливаете в своей функции is_run и потом нигде ее не проверяете
я не хочу ее проверять, я хочу скрипт закрыть...
Цитата
Anton написал:
Ваша задача как-то мейну сообщить, что надо выйти из цикла
а как, например, это сделать? или лучше не привлекать для этого отдельную функцию вообще?(можно прям в main по условию закрыть скрипт - это я понимаю)

В любом случае спасибо
 
Чтобы "закрылся" скрипт, надо чтобы закончился мейн. Чтобы закончился мейн, надо выйти из цикла, в котором он вертится. Чтобы выйти из цикла, надо в нем проверить is_run и если там false, то и выйти. Вы ж проверяете только свое EnterInPos, соответственно ваш мейн плюет на ваше же пожелание "пора выходить", выраженное установкой is_run в false. Уж я не знаю, как еще подробнее объяснить.
 
Anton, ok, спасибо
Страницы: 1
Читают тему
Наверх