@Lokko спасибо!
Возможно ли так получать глобальную переменную?
-
@kuzkuz said in Возможно ли так получать глобальную переменную?:
Скрипт работает в несколько потоков.
Есть глобальная переменная, которая меняется время от времени (рандомные промежутки).Существует ли такая возможность в БАС не строить такой алгоритм работы
кубик
запросить переменную
кубик
запросить переменную
кубик
запросить переменнуюТ.е. есть ли возможность у любого из потоков "постоянного" наблюдения за значением переменной без обращения к ней?
ps или при изменении переменной в поток приходит сигнал ....Можно изменить функцию _sa() что бы после каждого действия проверялась глобальная переменная, но проблема в том, что функция синхронная и добавить какие либо асинхронные действия BAS в неё не получится.
Так же можете использовать цикл "while" с условием из глобальной переменной, это условие будет проверятся перед каждой итерацией. -
@tet-vivi said in Возможно ли так получать глобальную переменную?:
@kuzkuz а во время
"постоянного" наблюденияпоток что-то должен делать?Поток должен делать много чего, перебирать урл-ы, загружать нужные, брать данные
что должно происходить при изменении переменной?
перенастраивать браузер
-
@kuzkuz said in Возможно ли так получать глобальную переменную?:
@Fox ваши примеры мне интересны, но не понятны пока что.
В посте выше описано что мне нужно - то что вы описали, может мне помочь?Нет, но я думаю тут нужно смотреть на изначальную задачу. Может вам проще будет вызывать функции асинхронно и прерывать их в случае смены ip
-
@Fox said in Возможно ли так получать глобальную переменную?:
@kuzkuz said in Возможно ли так получать глобальную переменную?:
@Fox ваши примеры мне интересны, но не понятны пока что.
В посте выше описано что мне нужно - то что вы описали, может мне помочь?Нет, но я думаю тут нужно смотреть на изначальную задачу. Может вам проще будет вызывать функции асинхронно и прерывать их в случае смены ip
Есть список урл, потоки их перебирают. Если урл соответствует некой маске, поток заходит, берет код страницы, грузит страницу (обязательное условие).
и тут начинается проблема в периодах вызова функции проверки ip
вызывать каждую секунду, три секунды, 5 или 20 сек...
и это я описал простой алгоритм из 5 кубиков, а если кубиков 300 -
@kuzkuz said in Возможно ли так получать глобальную переменную?:
@Fox said in Возможно ли так получать глобальную переменную?:
@kuzkuz said in Возможно ли так получать глобальную переменную?:
@Fox ваши примеры мне интересны, но не понятны пока что.
В посте выше описано что мне нужно - то что вы описали, может мне помочь?Нет, но я думаю тут нужно смотреть на изначальную задачу. Может вам проще будет вызывать функции асинхронно и прерывать их в случае смены ip
Есть список урл, потоки их перебирают. Если урл соответствует некой маске, поток заходит, берет код страницы, грузит страницу (обязательное условие).
и тут начинается проблема в периодах вызова функции проверки ip
вызывать каждую секунду, три секунды, 5 или 20 сек...ни чего не понял. Если вы грузите страницу, зачем вам проверять глобальную переменную?
-
@Fox said in Возможно ли так получать глобальную переменную?:
@kuzkuz said in Возможно ли так получать глобальную переменную?:
@Fox said in Возможно ли так получать глобальную переменную?:
@kuzkuz said in Возможно ли так получать глобальную переменную?:
@Fox ваши примеры мне интересны, но не понятны пока что.
В посте выше описано что мне нужно - то что вы описали, может мне помочь?Нет, но я думаю тут нужно смотреть на изначальную задачу. Может вам проще будет вызывать функции асинхронно и прерывать их в случае смены ip
Есть список урл, потоки их перебирают. Если урл соответствует некой маске, поток заходит, берет код страницы, грузит страницу (обязательное условие).
и тут начинается проблема в периодах вызова функции проверки ip
вызывать каждую секунду, три секунды, 5 или 20 сек...ни чего не понял. Если вы грузите страницу, зачем вам проверять глобальную переменную?
в глобальной переменной ip прокси.
если она поменялась, надо обновить настройки браузера.
так понятнее? -
@kuzkuz said in Возможно ли так получать глобальную переменную?:
@Fox said in Возможно ли так получать глобальную переменную?:
@kuzkuz said in Возможно ли так получать глобальную переменную?:
@Fox said in Возможно ли так получать глобальную переменную?:
@kuzkuz said in Возможно ли так получать глобальную переменную?:
@Fox ваши примеры мне интересны, но не понятны пока что.
В посте выше описано что мне нужно - то что вы описали, может мне помочь?Нет, но я думаю тут нужно смотреть на изначальную задачу. Может вам проще будет вызывать функции асинхронно и прерывать их в случае смены ip
Есть список урл, потоки их перебирают. Если урл соответствует некой маске, поток заходит, берет код страницы, грузит страницу (обязательное условие).
и тут начинается проблема в периодах вызова функции проверки ip
вызывать каждую секунду, три секунды, 5 или 20 сек...ни чего не понял. Если вы грузите страницу, зачем вам проверять глобальную переменную?
в глобальной переменной ip прокси.
если она поменялась, надо обновить настройки браузера.
так понятнее?Немного понятнее. Для чего обновлять настройки браузера? Ведь если сменился ip, то работу лучше прекратить и начать по новой. В этом плане идеально подходит асинхронный вызов функции
-
@Fox said in Возможно ли так получать глобальную переменную?:
Немного понятнее. Для чего обновлять настройки браузера? Ведь если сменился ip, то работу лучше прекратить и начать по новой. В этом плане идеально подходит асинхронный вызов функции
Хорошо. Сейчас опишу подробно
Берем урл. Загружаем в браузере. Далее 150 кубиков неких действий с урл/браузером. Манипуляции которые в 1 сек не уложить. Нужно делать что то 5 сек, что то 30 сек, что то 3 минуты.
ps то что больше 5 сек можно зациклить по 5 сек, чтобы если нужно что то делать между циклами делалось.... но это не важно....Вопрос только в том
Как в данном случае своевременно получать инфу о том что ip сменился и прерывать поток? -
@kuzkuz said in Возможно ли так получать глобальную переменную?:
@Fox said in Возможно ли так получать глобальную переменную?:
Немного понятнее. Для чего обновлять настройки браузера? Ведь если сменился ip, то работу лучше прекратить и начать по новой. В этом плане идеально подходит асинхронный вызов функции
Хорошо. Сейчас опишу подробно
Берем урл. Загружаем в браузере. Далее 150 кубиков неких действий с урл/браузером. Манипуляции которые в 1 сек не уложить. Нужно делать что то 5 сек, что то 30 сек, что то 3 минуты.
ps то что больше 5 сек можно зациклить по 5 сек, чтобы если нужно что то делать между циклами делалось.... но это не важно....Вопрос только в том
Как в данном случае своевременно получать инфу о том что ip сменился и прерывать поток?При асинхронном вызове функции вы можете прервать поток из вне. В первом потоке вы вызываете необходимое количество функций в цикле и записываете их id в массив. Далее циклом проверяете внешний ip, если ip сменился, прерываете необходимые функции по id и запускаете их снова уже с новыми данными (ip и другую информацию можно передать через атрибуты функции, это проще, чем через глобальную переменную)
-
@kuzkuz said in Возможно ли так получать глобальную переменную?:
@Fox Хорошо.
А если поток нельзя прерывать при условии что урл загружен в браузер - это усложняет задачу?
В таком случае надо обновить настройки браузера, но продолжить работу потока.в таком случае только циклическая проверка с глобальной переменной
-
@Fox said in Возможно ли так получать глобальную переменную?:
@kuzkuz said in Возможно ли так получать глобальную переменную?:
@Fox Хорошо.
А если поток нельзя прерывать при условии что урл загружен в браузер - это усложняет задачу?
В таком случае надо обновить настройки браузера, но продолжить работу потока.в таком случае только циклическая проверка с глобальной переменной
Как в данном случае своевременно получать инфу о том что ip сменился ? Только гадать, поставить через каждый кубик получение инфы о глобальной переменной?
-
@kuzkuz said in Возможно ли так получать глобальную переменную?:
@Fox said in Возможно ли так получать глобальную переменную?:
@kuzkuz said in Возможно ли так получать глобальную переменную?:
@Fox Хорошо.
А если поток нельзя прерывать при условии что урл загружен в браузер - это усложняет задачу?
В таком случае надо обновить настройки браузера, но продолжить работу потока.в таком случае только циклическая проверка с глобальной переменной
Как в данном случае своевременно получать инфу о том что ip сменился ? Только гадать, поставить через каждый кубик получение инфы о глобальной переменной?
Давайте рассуждать логически, вам нужно в зависимости от значения переменной произвести какие то действия, так? Значит что то должно периодически сверять глобальную и локальную переменную.
Например есть функция _sa(), которая вызывается после каждого действия автоматически, эту функцию можно изменить и вставить в неё прерывание потока в зависимости от условия. Но это сработает только в режиме "запуска", а в режиме "записи" просто повесит BAS.Мне подсказывает опыт, что задача решается не с того конца. Проще было бы самому менять внешний ip, когда отработали потоки.
-
@Fox said in Возможно ли так получать глобальную переменную?:
Например есть функция _sa(), которая вызывается после каждого действия автоматически, эту функцию можно изменить и вставить в неё прерывание потока в зависимости от условия. Но это сработает только в режиме "запуска", а в режиме "записи" просто повесит BAS.
- нельзя прерывать поток, если браузер открыт, обязательно надо довести до завершения, проделав все этапы.
- что за функция sa, которая вызывается автоматически после каждого действия? я думаю мне бы это подошло. Она бы вызывала ip.bablosoft и чекала то что нужно. Если произошла смена, цеплялась бы перенастройка браузера.
-
@kuzkuz said in Возможно ли так получать глобальную переменную?:
@Fox said in Возможно ли так получать глобальную переменную?:
Например есть функция _sa(), которая вызывается после каждого действия автоматически, эту функцию можно изменить и вставить в неё прерывание потока в зависимости от условия. Но это сработает только в режиме "запуска", а в режиме "записи" просто повесит BAS.
- нельзя прерывать поток, если браузер открыт, обязательно надо довести до завершения, проделав все этапы.
Только проверка в цикле, последующую полемику считаю бессмысленой
- что за функция sa, которая вызывается автоматически после каждого действия? я думаю мне бы это подошло. Она бы вызывала ip.bablosoft и чекала то что нужно. Если произошла смена, цеплялась бы перенастройка браузера.
Я уже писал о том, что это синхронная функция (в теме лайфхаках упоминали о ней). То есть в неё нельзя поместить действия код которых заканчивается на восклицательный знак
!. Действие "fail" так же является синхронным, но при помещении этого метода в функцию, в режиме "записи" BAS зависает.
@support уже писал о том, что подобные ошибки не будут поддерживаться, что стоит использовать кубики. -
@Fox said in Возможно ли так получать глобальную переменную?:
Только проверка в цикле, последующую полемику считаю бессмысленой
Я вообще не понимаю, понял ли ли Вы что я хочу сделать.
Своевременную перенастройку браузера, на случай если ip сменился и браузер отрыт. Проверка в цикле сменился ip или нет = это и школьнику понятно. ip сменился пишет в глоб переменную новое значение.Речь была только о том, как организовать скрипт дальше. Как часто внутри потока (через каждый кубик, через каждые 2 кубика) проверять изменилась ли глоб переменная и если изменилась то сделать то что нужно...
тема была создана есть ли возможность получать сигнал о таком изменении не обращаясь к глоб перем
-
@kuzkuz said in Возможно ли так получать глобальную переменную?:
@Fox said in Возможно ли так получать глобальную переменную?:
Только проверка в цикле, последующую полемику считаю бессмысленой
Я вообще не понимаю, понял ли ли Вы что я хочу сделать.
Своевременную перенастройку браузера, на случай если ip сменился и браузер отрыт. Проверка в цикле сменился ip или нет = это и школьнику понятно. ip сменился пишет в глоб переменную новое значение.Речь была только о том, как организовать скрипт дальше.
Я говорил о проверке внутри выполняемой функции
Как часто внутри потока (через каждый кубик, через каждые 2 кубика) проверять изменилась ли глоб переменная и если изменилась то сделать то что нужно...
Вы думаете я вам смогу помочь в этом вопросе не зная вашей логики и не глядя в ваш скрипт?
тема была создана есть ли возможность получать сигнал о таком изменении не обращаясь к глоб перем
Да тут как душе угодно, можете передавать ip адрес через ресурс, или через файл, или внутри функции в каждом потоке через каждое действие ставить http проверку внешнего ip..
Я, если честно, не понимаю, как вы себе подобную логику вообще представляете? Вот ваша функция внутри потока выполняет действия и в какой то момент она останавливается, выполняет необходимые вам дополнительные действия и возвращается обратно на то же место?