@dilolo said in Как взаимодействовать с ботом:
Единственно что пришло на ум
Ща накидаю вариантов:
Через базу данных Монго Любую другую базу данных (удаленно) Файл (ты это уже сам догадался) Вебсервер Сокетсервер Отдельное приложениеМлин не получается...помогите плиз.Уже тыкали мне как сделать но не происходит так как я хочу.Мне надо чтобы браузер перезапускался через 300 секунд.
Вот я сделал несколько потоков,каждый поток делает разные действия.Но нужно чтобы независимо не от чего поток закончил работу ровно через 300 секунд и перезапустился.Ошибки не ошибки,не загрузилась страница и т.д. без разница,главное чтобы поток через 300 сек перезапустился.
Дел ов том что использую моильные прокси,а они даются только на 5 минут и получается что на входе один айпи,а на выходе другой айпи.
Действие спать не поможет,так как точно не известно когда поток закончит работу,может и через 250 сек.а может и через 280 сек,н ов любом случае нужно чтобы перезапускался процесс ровно через 300 сек.
Помогите плиз.
Вроде как получается но дело в том что я не знаю куда вставить WHile в самое начало потока,то бишь идёт сначала While,а потом номер потока [[THREAD_INDEX]] == 2 или номер потока и потом уже внутри делать всё что нужно?
Буду очень пре-очень благодарен.
Фиксируешь в начале скрипта время и проверяешь после каждого действия или как хочешь сам фиксируешь еще раз время уже на другую переменную и сраниваешь разницу сколько секунд если больше 300 сек то делаешь прервать скрипт при это поставив 999999 неудачных запусков
Спасибо большое за помощь но к сожалению не получается.
Действия в скрипте заканчиваются например на 267 секунде и начинаются заново.Только потом когда прошло 300 сек,...а в это время действия уже второй раз проходят и пока не пройдут до конца не перезапускается.А это уже получается не 300 сек а больше.
В общем ещё остаётся время до 300 секунд и неизвестно какое время,и скрипт начинает сначала.Уже не то.Надо чтобы жёстко работал ровно 300 секунд плюс минус 10 секунд,и потом перезапускался,даже если действия в самом скрипте заканчиваются на 240 секунде.Выждать ещё как-то 60 секунд и перезапустить.
В голову вообще не приходит.
Как я понимаю логику надо выждать оставшейся время до 300 сек и только тогда перезапускать процесс.
Может кто подскажет?
Я вижу такую логику:
Получить время,прошли действия,получить время,установить переменную в которой прописать 300 минус конечное время,далее спать и прописать в сон то время которое получил (300 минус конечное время),потом уже перезапуск.Я правильно понимаю логику?
@bodlo Попробуйте сделать так: получить время,прибавить к ней 300 секунд и сохранить в переменную,дальше выполняется ваш скрипт.Потом в цикле while делается проверка : получить время,сверить с временем из той переменной,если сейчас время больше или равно той времени из переменной,то break,если нет,спать например 3 секунды и заново проверку делать.
Например : сейчас 19:50,после добавления секунд поток должен будет завершиться в 19:55.Выполняется ваш скрипт,затем идет сверка,если еще рано завершать,то ждет.
Сделал так,пошагово покажу может кому пригодиться.
1.Начало скрипта "Дата сейчас".
В самое начало скрипта ставим "Дата сейчас".
2.Далее ваши действия парсинг,клики и т.д.
3.Конец скрипта после всех действий ставим так же "Дата сейчас".Это значит мы получили конечную дату.
4.Далее ставим "Разница между датами".
5.Далее ставим переменную в значение пишем,в моём случае это будет 300-Разница между датами....и у нас путём математики получается в переменной секунды которые не дошли до 300.
6.Далее ставим например "Эмуляция бездействия" и вставляем переменную "300-разница между датами".
Логика такая:
Получаем дату.
Делаем всякие действия.
Конец работы опять получаем дату.
Далее получаем разницу между датами.
Далее ставим переменную:в значение пишем ...300 минус разницу между датами.... и название например OSTATOK_SECUND
Самый конец скрипта,ставим какие-нибудь действия которые считаются секундами например "Эмуляция бездействия" и в неё переменную переменную OSTATOK_SECUND.
Теперь если скрипт закончит работу в 285 секунд,а вам надо чтобы он закончил работу в 300 секунд.То 300 минус разница между датами и получиться 15 секунд.Это остаток он будет ещё работать,потом уже перезапуститься.
Кому это надо не знаю,ну например накрутка на сайт,много потоков где каждый выполняет свои действия и все действия у потоков разные и надо чтобы каждый поток заканчивал работу в своё время заданное.
P.S.
Если в конце нужно вам действие "Спать" то "Спать" исчисляется в миллисекундах.Просто делайте: 300 минус разница в датах и умножить на 1000.Только правильно наверное будет поставить скобки (300-разница в датах)умножить на 1000. 300-разница в датах*1000.
Надеюсь хоть кому-то помог.
Только есть условие,изначально вы должны знать хоть примерно сколько уходит секунд на всю работу скрипта.И рассчитывать примерно плюс минус 40 секунд в запасе.Рассчитывайте на вскидку примерно сколько загружается страница,включение прокси,перед и после них обязательно нужно ставить спать,иначе может не загрузиться страница и т.д. в общем где-то так.