Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: BoJIwE6HuK on November 09, 2013, 05:19:56 AM

Title: Выполнение отложеных\периодических операций
Post by: BoJIwE6HuK on November 09, 2013, 05:19:56 AM
Была цель - сделать в коротком скрипте который длится меньше минуты таймер на самовыключение (остановку) через 85 минут. Начал искать, нашел фунцию в шаблонах "условие с таймером", но не могу понять почему она не работает.
Для теста сделал следующее:
1 - записал минуту хаотичного движения мышью по рабочему столу
2 - в самое начало скрипта вписал то самое "IF" с интервалом выполнения 10 секунд
3 - всё это дело стартанул.

В итоге видим, что условие выполнилось всего 1 раз, при этом сразу после начала скрипта и за целую минуту больше не выполнялось, ПОЧЕМУ?
Title: Re: Выполнение отложеных\периодических операций
Post by: Johnny on November 09, 2013, 07:35:24 AM
а ты в этом уверен? у тебя перед каждой проверкой условия лог очищается

при этом мне еще почему то кажется что ты ожидал что условие будет проверяться постоянно, пока крутится твой записанный скрипт. однако это не так, оно проверится лишь спустя минуту хаотичных движений, а не в течение.
Title: Re: Выполнение отложеных\периодических операций
Post by: BoJIwE6HuK on November 09, 2013, 11:16:33 AM
при этом мне еще почему то кажется что ты ожидал что условие будет проверяться постоянно, пока крутится твой записанный скрипт.
тут ты прав

остался один вопрос - как сделать остановку скрипта (halt) через 85 минут после его запуска?
Title: Re: Выполнение отложеных\периодических операций
Post by: Oraven on November 09, 2013, 11:53:43 AM
Проще некуда

Code: (clickermann) [Select]
DEFINE($time, $_time_t + 5100)
IF($time < $_time_t)
   HALT
END_IF
Title: Re: Выполнение отложеных\периодических операций
Post by: BoJIwE6HuK on November 09, 2013, 12:10:03 PM
Проще некуда

Code: (clickermann) [Select]
DEFINE($time, $_time_t + 5100)
IF($time < $_time_t)
   HALT
END_IF

Спасибо, но это несколько не удобная реализация. А что если мой скрипт длится ровно 20 минут (абстрактное значение, взятое для примера. опираться на него не стоит), т.е. проверка на "$time < $_time_t" будет производиться в 80 минут и в следующий раз уже в 100 минут. Скрипт остановится уже не в 85 минут как надо, а в 100 минут что крайне не желательно (черевато баном, например).

Можно ли остановить скрипт ровно через 85 минут после его запуска?


Неужели нельзя
Title: Re: Выполнение отложеных\периодических операций
Post by: Oraven on November 09, 2013, 02:37:39 PM
Ну если была бы многопоточность, то второй скрипт мог бы остановить первый. но у нас её пока нет.
Этот код вставляется в начале скрипта. Как вариант можно повтыкать условие

IF($time < $_time_t)
  HALT
END_IF

В код в разных местах
Title: Re: Выполнение отложеных\периодических операций
Post by: BoJIwE6HuK on November 09, 2013, 03:46:57 PM
Ну если была бы многопоточность, то второй скрипт мог бы остановить первый. но у нас её пока нет.

Многопоточность то конечно хорошо, но на мой взгляд для требуемой задачи она не требуется.
Можно просто добавить нужный функционал вот сюда:
Title: Re: Выполнение отложеных\периодических операций
Post by: Oraven on November 09, 2013, 04:07:11 PM
Если твой скрипт несложный (обычная запись) то скачай Clickermann v2.1 Там есть типо планировщика, время вкл и выкл.
Title: Re: Выполнение отложеных\периодических операций
Post by: BoJIwE6HuK on November 09, 2013, 07:59:34 PM
Сейчас да, простой скрипт основаный на "иф пикчер ин" собраный на скорую руку, далее в планах реализация дополнительных возможностей логирования и вывод статистики в конце сессии.
Title: Re: Выполнение отложеных\периодических операций
Post by: Крис Тинка on December 15, 2013, 10:37:51 PM
Oraven, надежда на тебя))) Как сделать задержку в конце скрипта, равную 3600 минус время выполнения скрипта. Скрипт выполняется по кругу и время выполнения различно.
Title: Re: Выполнение отложеных\периодических операций
Post by: Oraven on December 15, 2013, 11:28:30 PM
Запись в лог можешь удалить, погрешность +-1 мс

Code: (clickermann) [Select]
$st = $_ms // это в начало

waitms(RND(250,600)) // твой скрипт

print("Время скрипта ", $_ms - $st)

$w = $_ms-$st // это в конец
WAITMS(3600-$w)

print("Общая задержка ", $_ms - $st)
Title: Re: Выполнение отложеных\периодических операций
Post by: Крис Тинка on December 16, 2013, 06:04:33 AM
Суть понятна. Мне нужно было чтобы скрипт выполнялся 1 час. Сделала шаблон в минутах, может кому пригодится.
Code: (clickermann) [Select]
$st = $_time_t // запись точки отсчета
$dt = 8 // Здесь задается минимальное время цикла в минутах
print("задано время;мин", $dt)
//--------------------------------
wait(60*RND(1,5)) // скрипт
//--------------------------------
print("Скрипт выполнялся;мин ", ($_time_t - $st)/60)
$w = $_time_t-$st // Вычисление затраченного времени
if($W<$dt*60)
   print("Добавлено;мин", $dt-$w/60)
   WAIT($dt*60-$w) // добавление времени
else
   print("Время не добавлено из-за превышения.")
end_if
print("Общая задержка; мин ", ($_time_t - $st)/60)