Остановить все потоки, а потом снова запустить.



  • подскажите пожалуйста, не могу сообразить как реализовать такую штуку:
    суть в том, что нужно раз в N времени менять профиль(прокси) в proxifier, т.е. выполнять командную строку по смене настроек proxifier.

    if [[THREAD_INDEX]] == 1: и выполнять это только в одном потоке один раз в N времени вроде как не проблема.

    Но, если я внезапно сменю прокси, то в остальных потоках часть что-то шло через один прокси и резко продолжит идти через другой, что не гуд. Вот я и думаю, как-то остановить (поставить на паузу, перевести метку в начало скрипта), а после смены прокси снова запустить все потоки.

    Ну или может подскажете более изящные идеи.

    Все заранее спасибо за ответы.

    P.S.
    вся эта возня необходима для проксирования флеш элементов на странице.



  • @Sevenup said in Остановить все потоки, а потом снова запустить.:

    подскажите пожалуйста, не могу сообразить как реализовать такую штуку:
    суть в том, что нужно раз в N времени менять профиль(прокси) в proxifier, т.е. выполнять командную строку по смене настроек proxifier.

    if [[THREAD_INDEX]] == 1: и выполнять это только в одном потоке один раз в N времени вроде как не проблема.

    Но, если я внезапно сменю прокси, то в остальных потоках часть что-то шло через один прокси и резко продолжит идти через другой, что не гуд. Вот я и думаю, как-то остановить (поставить на паузу, перевести метку в начало скрипта), а после смены прокси снова запустить все потоки.

    Ну или может подскажете более изящные идеи.

    Все заранее спасибо за ответы.

    P.S.
    вся эта возня необходима для проксирования флеш элементов на странице.

    Можно перезапускать не потоки внутри скрипта, а весь процесс.



  • @xclsv said in Остановить все потоки, а потом снова запустить.:

    @Sevenup said in Остановить все потоки, а потом снова запустить.:

    подскажите пожалуйста, не могу сообразить как реализовать такую штуку:
    суть в том, что нужно раз в N времени менять профиль(прокси) в proxifier, т.е. выполнять командную строку по смене настроек proxifier.

    if [[THREAD_INDEX]] == 1: и выполнять это только в одном потоке один раз в N времени вроде как не проблема.

    Но, если я внезапно сменю прокси, то в остальных потоках часть что-то шло через один прокси и резко продолжит идти через другой, что не гуд. Вот я и думаю, как-то остановить (поставить на паузу, перевести метку в начало скрипта), а после смены прокси снова запустить все потоки.

    Ну или может подскажете более изящные идеи.

    Все заранее спасибо за ответы.

    P.S.
    вся эта возня необходима для проксирования флеш элементов на странице.

    Можно перезапускать не потоки внутри скрипта, а весь процесс.

    каким образом это можно делать из проекта?



  • @Sevenup самое простое что приходит в голову это if [[текущее время]] == [[время перезапуска]] и fail в самом конце проекта.



  • @Sevenup said in Остановить все потоки, а потом снова запустить.:

    @xclsv said in Остановить все потоки, а потом снова запустить.:

    @Sevenup said in Остановить все потоки, а потом снова запустить.:

    подскажите пожалуйста, не могу сообразить как реализовать такую штуку:
    суть в том, что нужно раз в N времени менять профиль(прокси) в proxifier, т.е. выполнять командную строку по смене настроек proxifier.

    if [[THREAD_INDEX]] == 1: и выполнять это только в одном потоке один раз в N времени вроде как не проблема.

    Но, если я внезапно сменю прокси, то в остальных потоках часть что-то шло через один прокси и резко продолжит идти через другой, что не гуд. Вот я и думаю, как-то остановить (поставить на паузу, перевести метку в начало скрипта), а после смены прокси снова запустить все потоки.

    Ну или может подскажете более изящные идеи.

    Все заранее спасибо за ответы.

    P.S.
    вся эта возня необходима для проксирования флеш элементов на странице.

    Можно перезапускать не потоки внутри скрипта, а весь процесс.

    каким образом это можно делать из проекта?

    Функцией Запустить процесс



  • пробую делать так:

    1. проверка 1й ли тред (только первый будет управлять этим процессом).
    2. если первый решил заменить прокси в proxifier он ставит глобальную переменную STOP==true, читает конфиг проксифаера, меняю там прокси, "запустить процесс" перезаливаю конфиг в проксифаер и ставлю STOP==false.
    3. остальные процессы вначале всегда проверяют эту глобальную переменную, если true то "закрыть браузер" и while пока снова не будет false, после чего "открыть браузер" и продолжить работу.

    должно взлететь, отпишу по факту :)



  • @Sevenup Самый просто метод - использовать действие "Вызов функции в несколько потоков" и обернуть его в цикл.



  • @support said in Остановить все потоки, а потом снова запустить.:

    @Sevenup Самый просто метод - использовать действие "Вызов функции в несколько потоков" и обернуть его в цикл.

    Запустить N к-во раз функцию например в 10 потоков,потом поменять прокси и снова и т.д. я верно понял Вас?

    а как контролировать выполнение потоков фукнции? пока всёк-во запущенных потоков функции не закончатся,к следующему кубику не произойдет переход?



  • а когда функция запускается многопоточно, каждый поток - это отдельный браузер, в нем будет отдельные куки? т.е. внутри многопоточной функции я могу применить отпечаток и он будет уникален для каждого потока функции. Это равносильно многопоточному запуску функции main когда я запускаю проект, верно?



  • @Sevenup да



  • @DrPrime said in Остановить все потоки, а потом снова запустить.:

    @Sevenup да

    Красота! Спасибо.
    1й поток всегда открыт на about:blank - это норма, верно? т.е. основной поток будет завершен успешно только тогда, когда все потоки многопоточной функции завершаться успешно. А как на счет галки "перезапускать процесс в начале работы потока"? Она будет применима к многототочной функции равносильно как вобычном многопоточном запуске проекта? Localstorage будет очищаться?



  • @Sevenup about.blank это нормально, можно вообще открывать и закрывать браузер в функции, тогда в основном потоке браузер открываться не будет.
    По поводу localstorage не подскажу, но можно попробовать делать сброс с перезапуском вконце функции



  • понял, спасибо. Подождем еще автора, он то точно прояснит про localstorage в многопоточной функции :)

    Еще заметил не приятную багу: все ошибки в многопоточной функции в лог не выводятся. Она просто падает в "неудачное выполнение", а что там было не удачным, переменная пустаяилиеще что, не ясно :(



  • This post is deleted!


  • @Sevenup Блок настройки браузера надо ставить в начале, так как при этом перезапустится браузер. На всех сайтах с флешем такая проблема?



  • @Fox said in Остановить все потоки, а потом снова запустить.:

    @Sevenup Блок настройки браузера надо ставить в начале, так как при этом перезапустится браузер. На всех сайтах с флешем такая проблема?

    закрыл, открыл БАС и заработало.
    Теперь пытаюсь придумать, как принудительно включать нужный плагин выполняя JS код, что бы не зависеть от отпечатка. Сейчас приходится дергать сервис отпечатков пока не получу отпечаток например с флешем. Не хотелось бы нагружать таким способом сервис отпечатков.

    Если есть опыт в JS подсказать пожалуйста, что делаю не так:
    Object.defineProperty(window.navigator, 'mimeTypes', {get: function() {
    return [{description:"Shockwave Flash", "suffixes":"swf", "type":"application/x-shockwave-flash"},{description:"Shockwave Flash", "suffixes":"spl", "type":"application/futuresplash"}]; }});

    Object.defineProperty(window.navigator, 'plugins', {get: function() {
    return [{name:"Shockwave Flash", description:"Shockwave Flash 26.0 r0", "filename":"pepflashplayer.dll", 0:window.navigator.mimeTypes[0], 1:window.navigator.mimeTypes[1] }]; }});



  • @Sevenup С js знаком с натяжкой. Включать нужный плагин можно и не через js код, можно в самом файле ручками его поменять, прочитать, пройтись регуляркой и поменять что нужно. Или изначально выкачать отпечатки с флешем, проверяя их на входе. Сохранить их и использовать уже сохранённые.



  • @Fox said in Остановить все потоки, а потом снова запустить.:

    @Sevenup С js знаком с натяжкой. Включать нужный плагин можно и не через js код, можно в самом файле ручками его поменять, прочитать, пройтись регуляркой и поменять что нужно. Или изначально выкачать отпечатки с флешем, проверяя их на входе. Сохранить их и использовать уже сохранённые.

    да, вот только вариант с выкачать и остается :( так и делаю.
    Но красиво же было бы, если бы так чик пик запустил код и добавил/удалил/переназначил плагин. В общем-то чувствую я уже близко :) но вот с mimeTypes что-то не выходит.



  • Идея напарсить отпечатков с флешем отличная, только вот быстро сервис ложиться и залипает на "получить отпечаток" :( каждый 10й например с флешем, что бы 10 отпечатков получить нужно 100 раз сходить на сервер. Ключ с лимитом 1000 в минуту не спасает, очень быстро сервер уходит с бесконечное ожидание. Попробую днем завтра, может сейчас кто-то его активно использует :)



  • @Sevenup Тебе сколько нужно отпечатков с флешем? Поставь выгрузку с ожиданием на ночь, по тихоньку выгрузится.
    А вообще я бы прямо в отпечатке регуляркой менял ))


Log in to reply