Возможно ли так получать глобальную переменную?

Поддержка
  • @kuzkuz а во время "постоянного" наблюдения поток что-то должен делать?
    что должно происходить при изменении переменной?

  • @kuzkuz said in Возможно ли так получать глобальную переменную?:

    Скрипт работает в несколько потоков.
    Есть глобальная переменная, которая меняется время от времени (рандомные промежутки).

    Существует ли такая возможность в БАС не строить такой алгоритм работы

    кубик
    запросить переменную
    кубик
    запросить переменную
    кубик
    запросить переменную

    Т.е. есть ли возможность у любого из потоков "постоянного" наблюдения за значением переменной без обращения к ней?
    ps или при изменении переменной в поток приходит сигнал ....

    Можно изменить функцию _sa() что бы после каждого действия проверялась глобальная переменная, но проблема в том, что функция синхронная и добавить какие либо асинхронные действия BAS в неё не получится.
    Так же можете использовать цикл "while" с условием из глобальной переменной, это условие будет проверятся перед каждой итерацией.

  • @tet-vivi said in Возможно ли так получать глобальную переменную?:

    @kuzkuz а во время "постоянного" наблюдения поток что-то должен делать?

    Поток должен делать много чего, перебирать урл-ы, загружать нужные, брать данные

    что должно происходить при изменении переменной?

    перенастраивать браузер

  • @Fox ваши примеры мне интересны, но не понятны пока что.
    В посте выше описано что мне нужно - то что вы описали, может мне помочь?

  • @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 и другую информацию можно передать через атрибуты функции, это проще, чем через глобальную переменную)

  • @Fox Хорошо.
    А если поток нельзя прерывать при условии что урл загружен в браузер - это усложняет задачу?
    В таком случае надо обновить настройки браузера, но продолжить работу потока.

  • @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

    Проще было бы самому менять внешний ip, когда отработали потоки.

    Да. Но это дорого.

  • @Fox said in Возможно ли так получать глобальную переменную?:

    Например есть функция _sa(), которая вызывается после каждого действия автоматически, эту функцию можно изменить и вставить в неё прерывание потока в зависимости от условия. Но это сработает только в режиме "запуска", а в режиме "записи" просто повесит BAS.

    1. нельзя прерывать поток, если браузер открыт, обязательно надо довести до завершения, проделав все этапы.
    2. что за функция sa, которая вызывается автоматически после каждого действия? я думаю мне бы это подошло. Она бы вызывала ip.bablosoft и чекала то что нужно. Если произошла смена, цеплялась бы перенастройка браузера.
  • @kuzkuz said in Возможно ли так получать глобальную переменную?:

    @Fox said in Возможно ли так получать глобальную переменную?:

    Например есть функция _sa(), которая вызывается после каждого действия автоматически, эту функцию можно изменить и вставить в неё прерывание потока в зависимости от условия. Но это сработает только в режиме "запуска", а в режиме "записи" просто повесит BAS.

    1. нельзя прерывать поток, если браузер открыт, обязательно надо довести до завершения, проделав все этапы.

    Только проверка в цикле, последующую полемику считаю бессмысленой

    1. что за функция sa, которая вызывается автоматически после каждого действия? я думаю мне бы это подошло. Она бы вызывала ip.bablosoft и чекала то что нужно. Если произошла смена, цеплялась бы перенастройка браузера.

    Я уже писал о том, что это синхронная функция (в теме лайфхаках упоминали о ней). То есть в неё нельзя поместить действия код которых заканчивается на восклицательный знак !. Действие "fail" так же является синхронным, но при помещении этого метода в функцию, в режиме "записи" BAS зависает.
    @support уже писал о том, что подобные ошибки не будут поддерживаться, что стоит использовать кубики.

  • @Fox короче решения нет. тех кто возьмется сделать за оплату тоже нет.
    ясно, спасибо

  • @Fox said in Возможно ли так получать глобальную переменную?:

    Только проверка в цикле, последующую полемику считаю бессмысленой

    Я вообще не понимаю, понял ли ли Вы что я хочу сделать.
    Своевременную перенастройку браузера, на случай если ip сменился и браузер отрыт. Проверка в цикле сменился ip или нет = это и школьнику понятно. ip сменился пишет в глоб переменную новое значение.

    Речь была только о том, как организовать скрипт дальше. Как часто внутри потока (через каждый кубик, через каждые 2 кубика) проверять изменилась ли глоб переменная и если изменилась то сделать то что нужно...

    тема была создана есть ли возможность получать сигнал о таком изменении не обращаясь к глоб перем