многопоточность в проекте



  • @Turutur попробовал сделать сам - вроде норм, но иногда попадается так что идут 2 одинаковых значения под ряд.
    Слушай, а какая вообще суть скрипта? просто через использование ресурса никак не сделать этого?



  • Столкнулся с аналогичной проблемой,
    суть в следующем:
    1)Парсим прокси в онапликейшнстарт
    2)создаем глобальную переменную
    3)грузим в нее список ключей
    4)парсим выдачу гугла при условии что на каждый поток отдельный прокси

    При однопоточном варианте все прекрасно работает, если же многопоток то выдает ошибку что не может получить переменную с ключами. Пробовал и глобальную назначать в онапликейшнстарт и файл в список а после список в глобальную переменную и брать элемент из списка с удалением, вообще никак не хочет пахать



  • @DrPrime суть скрипта в сборе последних вступивших участников в группы ок по целевым запросам


  • administrators

    @Turutur

    суть скрипта в сборе последних вступивших участников в группы ок по целевым запросам

    Так а что не получается?

    1)Парсим прокси в онапликейшнстарт

    Можете создать ресурс, записать туда прокси, а потом использовать его как обычный ресурс в потоках



  • @support а не получается запускать несколько потоков - вернее получается - только все потоки обрабатывают одинаковые данные и прокси здесь ни причем - планирую использовать всего несколько аккаунтов для ускорения процесс - проверка на 3 аках - все норм со стороны ОК РУ - только BAS берет одинаковые данные с файла - соответтвенно скорость выполнения не увеличивается(


  • administrators

    @Turutur

    только BAS берет одинаковые данные с файла

    Хотелось бы увидеть настройки ресурса с файлом, а в идеале весь проект.



  • @support - в Ваше отсутствие - я не бросал попыток сделать многопоток самостоятельно - и несколько раз видоизменял проект - добавляя действия в онапликатионстарт, которые необходимо выполнить единожды - такие как список в файл и тому подобное - но перевести их в глобальную переменнцую не удалось( - как впрочем и сделать многопоток - сейчас проект выстроен линейно под один поток - @support пожалуйста покажите на примере моего проекта как его сделать многопоточным - по всем правилам, чтобы небыло пересечений действий в потоках и использования одинаковых ресурсов
    0_1477832211837_parse_members_ok.rar


  • administrators

    @Turutur

    @support пожалуйста покажите на примере моего проекта как его сделать многопоточным - по всем правилам, чтобы небыло пересечений действий в потоках и использования одинаковых ресурсов

    Вот. 0_1477845287267_2_PARSE_MEMBERS_DONOR_GROUP_OK.xml



  • @support спасибо - я даже не подозревал, что нужно так делать - пока изучал пример - у меня чуть питание в голове не отключилось). Огромным недостатком BAS, впрочем как и его колоссальным преимуществом является большое количество комбинаций действий - логически не всегда придешь к нужному решению - иногда это возможно только методом перебора всех возможных вариаций(



  • Возможно проблема уже решена, может даже данный пример уже был описан, но я его просмотрел. Выложу может кому-нибудь будет полезен. Создаем файл указываем его расположение. В онеапликейшен парсим туда ссылки и от туда уже в многопотоке обрабоатываем
    0_1477902472311_парс авито.xml


  • administrators

    @Стас Да, хороший пример, приблизительно так и работает.



  • @support я хочу как то добавить сюда ваш ответ мне из другой темы
    http://community.bablosoft.com/topic/416/как-запускать-потоки-поочереди-а-не-все-сразу/16

    Вы пишите @support said in Как запускать потоки поочереди? а не все сразу:

    Это элементарная задача - решается с помощью использования ресурсов. Когда используете ресурс, то БАС сам следит за тем чтобы он был разным для всех потоков. Что может быть проще?

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

    @support said in Как запускать потоки поочереди? а не все сразу:

    Я пробовал загружать ресурс в список в онапликатионстарт - но переменные не работают - пробовал так же создать глобальную переменную в онапликатионстарт и присвоить ей значение переменной содержащей список - то же не але... Где вход, где выход???

    Зачем пытаться сделать сложно, там где можно сделать легко?

    Я пытаюсь сделать легко - ваш процесс построения шаба - гораздо сложнее - потому что он сильно узкий. - Очень много вопросов - по вашей схеме - многопоточный скрипт - это упрощенный до безобразия проект, абсолютно все действия которого - подчеркиваю -ВСЕ! повторяются в каждом потоке И ОНИ ПОВТОРЯЮТСЯ С КАЖДЫМ НОВЫМ УСПЕХОМ! - ЧТО БРЕДОВО САМО ПО СЕБЕ.

    В вашем примере в каждом успехном потоке при авторизации вновь и вновь происходит переход на страницу профиля аккаунта - что само по себе подозрительно - если я буду получать данные с 150 групп в 3 потока - то каждый поток посетит страницу профиля в котором авторизован по 50 раз - после каждого посещения группы для сбора данных. И второй момент - в ресурсе у меня всего 4 строки - но в лог выводится 6 удачных сообщений и одно с ошибкой получения ресурса ну и одно что скрипт отработал корректно...
    Почему так?

    @support Как сделать так, чтобы в многопотоке - каждый поток авторизовывался либо по кукам либо по логину - но всего лишь один раз dj время первого успеха -переходил в страницу профиля , а затем только выполнял поставленную задачу. И второе - как сделать так, чтобы после успешного действия удалялась строка из ресурса???



  • И еще - вы показали авторизацию - усовершенствованную - которую не смог понять - я про функцию OkAutoLogin:

    0_1478433301553_1111111111111.png

    0_1478433325044_22222222222222.png

    0_1478433333969_3333333333333333333.png

    Как то нереально все прокачано - не могу понять - ресурса для сохранения кукисов нет - и не нашел действия с указанием пути сохранения - а только лишь название файла собранное в переменную COOKIES_FILE - где будет создан файл и записан результат если не указан путь и ооочччеенньь интересно как BAS в начале функции понимает где искать этот файл - ведь он не подключен через ресурс?


  • administrators

    @Turutur

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

    Строки удаляются по прошествии некоторого времени если установить галку запись. Также их можно удалить мгновенно используя действие "Удалить Текущий Элемент"

    Я пытаюсь сделать легко - ваш процесс построения шаба - гораздо сложнее - потому что он сильно узкий. - Очень много вопросов - по вашей схеме - многопоточный скрипт - это упрощенный до безобразия проект, абсолютно все действия которого - подчеркиваю -ВСЕ! повторяются в каждом потоке И ОНИ ПОВТОРЯЮТСЯ С КАЖДЫМ НОВЫМ УСПЕХОМ! - ЧТО БРЕДОВО САМО ПО СЕБЕ.

    Я не понял что именно бредово?

    В вашем примере в каждом успехном потоке при авторизации вновь и вновь происходит переход на страницу профиля аккаунта - что само по себе подозрительно - если я буду получать данные с 150 групп в 3 потока - то каждый поток посетит страницу профиля в котором авторизован по 50 раз - после каждого посещения группы для сбора данных.

    Ну можете удалить то место, где проверяется правильность авторизации, тогда на страницу профиля входить будет не нужно.

    И второй момент - в ресурсе у меня всего 4 строки - но в лог выводится 6 удачных сообщений и одно с ошибкой получения ресурса ну и одно что скрипт отработал корректно...

    Не помню что там( Прикрепите сообщения.

    Как сделать так, чтобы в многопотоке - каждый поток авторизовывался либо по кукам либо по логину - но всего лишь один раз dj время первого успеха -переходил в страницу профиля , а затем только выполнял поставленную задачу.

    Уберите проверку на успешность входа.

    И второе - как сделать так, чтобы после успешного действия удалялась строка из ресурса???

    Строки удаляются по прошествии некоторого времени если установить галку запись. Также их можно удалить мгновенно используя действие "Удалить Текущий Элемент"

    ресурса для сохранения кукисов нет

    Вместо этого запись в файл и чтение из файла. Попробуйте создать свою функцию автологина.

    ооочччеенньь интересно как BAS в начале функции понимает где искать этот файл - ведь он не подключен через ресурс?

    В папке с exe



  • @support Спасибо!

    @support said in многопоточность в проекте:

    Уберите проверку на успешность входа.

    в данном случае этот вариант подойдет, но сложилась такая ситуация: - важной частью шаба для приглашения является первоначальное посещение группы - куда будем приглашать - чтобы она встала в список групп первой и там же получаю ее название, чтобы делать проверку - как быть в этом случае? - я все не могу успокоиться по поводу того что не правильно понимал назначение онапликатионстарт(((( - как мне выполнить такой порядок - авторизация - зашли в группу куда будем приглашать - перешли на страницу пользователя - пригласили - перешли на страницу другого пользователя - пригласили - перешли - пригласили - перешли 50 - пригласили и тд., то есть при новом успехе чтобы поток не переходил каждый раз в группу куда будем приглашать?


  • administrators

    как мне выполнить такой порядок - авторизация - зашли в группу куда будем приглашать - перешли на страницу пользователя - пригласили - перешли на страницу другого пользователя - пригласили - перешли - пригласили - перешли 50 - пригласили и тд., то есть при новом успехе чтобы поток не переходил каждый раз в группу куда будем приглашать?

    Ну так так и делайте, тут не вижу надобности для костылей, какие проблемы с этим скриптом?



  • @support said in многопоточность в проекте:

    Ну так так и делайте, тут не вижу надобности для костылей, какие проблемы с этим скриптом?

    проблем со скриптом нет - есть проблема с пониманием построения - тем более после того как Вы мне своим примером по рукам надовали - то есть такой алгоритм можно через while по данным в ресурсе выполнить?


  • administrators

    @Turutur
    Алгоритм простой

    Берем акк из ресурса.
    Заходим в этот акк(можно подключить автологин по желанию).
    Берем группу из ресурса.
    Получаем пользователей в список.
    Foreach Список пользователей
         Игнорировать ошибки(на всякий случай)
              Приглашаем текущего пользователя.
    

    Если при этом установить несколько потоков, то это будет работать для нескольких пользователей одновременно.



  • @support said in многопоточность в проекте:

    Получаем пользователей в список.
    Foreach Список пользователей

    у меня комбайн разделен на 3 скрипта - потому как запускать все всесте без надобности - это долгий и ненужный процесс - это я к тому, ч в третьей части - именно в приглашалке я имею входные ресурсы с аккаунтами для авторизации группу куда приглашать и файл со списком пользователей которых нужно приглашать - и в этом случае действие получаем пользователей в список из ресурса не подойдет так как оно будет копировано на все потоки - сдесь я сделал алгоритм такой же как в примере что вы сбрросили - сделал авторизацию (убрал проверку) - затем загружаем пользователя из ресурса проверяем можно ли пригласить - затем проверяем в группе или нет - если нет приглашаем - после в лог пишу кого пригласил - в ресурсе поставил и чтение и запись, чтобы строка использованная удалялсь - ИНТЕРЕСУЕТ ЦИКЛ ЗДЕСЬ КАК РЕАЛИЗОВАТЬ, ВОПРОС (как мне выполнить такой порядок - авторизация - зашли в группу куда будем приглашать - перешли на страницу пользователя - пригласили - перешли на страницу другого пользователя - пригласили - перешли - пригласили - перешли 50 - пригласили и тд., то есть при новом успехе чтобы поток не переходил каждый раз в группу куда будем приглашать?) ПРО ЭТОТ СЛУЧАЙ! - как реализовать цикл по ресурсу? Какой здесь будет алгоритм?



  • @support - чего не хватает в BAS - почему я не могу сделать задуманное - я могу сделать любой скрипт - реально в два клика - но только однопоточный!!!! Почему симбиоз не получается??? Какого то действия не хватает или функции!!! Я пользовался софтом, который работал по схеме - авторизация аккаунтов во всех потоках - проверка вступления в группу в которую приглашаем - если нет вступаем - а потом все потоки берут строку из файла который я прикрепляю и приглашают в группу - причем разница не ощутима что я с одного ака приглашаю, что с 25, либо же 1 ак копирую на 25 строк и приглашаю в 25 потоков. В Bas же приходится переиначивать скрипт, чтобы перевести на многопоток - потому что никак не получается скрипт содержащий список действий однопоточный (авторизация - получения пользователей в файл - цикл по списку пользователей - приглашаем в группу) - перевести в многопоток - я как только не пробовал - ну не работает он так!!! Как -КАК это сделать - я уже месяц пытаюсь - я не спорю, что все работает и все легко - но в многопотоке не работает!!! Функция онапликатионстарт - это вообще - бред! Зачем она нужна? Вы пишите что это функция которая запускается вначале работы скрипта для всех его потоков - ЭТО СУПЕР ЭТО И НУЖНО - НО ПОЧЕМУ Я НЕ МОГУ ИСПОЛЬЗОВАТЬ ЕЕ ДЛЯ ВХОДНЫХ ДАННЫХ? Может можно все таки сделать так, что действия выполненные в ней и переменные с присвоенными значениями сохранялись для остальных функций и действий при последовательном выполнении.
    КАК БЫ ЭТО ВЫГЛЯДЕЛО: Нужен скрипт в 25 потоков

    • ускоряем скрипт - создаем онапликатионстарт
      в нем действия
    • запрет загрузки картинок, wcc? фреймов, скиптов и тд что нужно
      *здесь же получаем данные из ресурса в список
    • здесь же получаем расположение файла
    • здесь же создаем список
      *ЕСЛИ НУЖНО ПОЛУЧИТЬ КАКИЕТО ДАННЫЕ ИЗ ИНЕТА - ПОЛУЧАЕМ В ОДИН ПОТОК С ИСПОЛЬЗОВАНИЕМ ОДНИХ УЧЕТНЫХ ДАННЫХ - И ОБРАБАТЫВАЕМ

    А вот дальше уже идет работа основного скрипта в многопотоке - запуск потока 1 -2- 3- 4- 5- ... -25 - и выполнение прописанных действий.

    ПРИЧЕМ САМЫМ ГЛАВНЫМ ОБСТОЯТЕЛЬСТВОМ ЯВЛЯЕТСЯ ТО, ЧТО ПРИ МНОГОПОТОЧНОМ ИСПОЛЬЗОВАНИИ ПЕРЕМЕННЫХ И ДЕЙСТВИЙ С НИМИ СВЯЗАННЫХ - ЭТО ДЕЛАЕТСЯ ВСЕГО ОДИН РАЗ ДЛЯ ВСЕХ ПОТОКОВ - ТО ЕСТЬ ДАННЫЕ НЕ МНОЖАТЬСЯ! Если в теле скрипта при 10 поточном исполнении есть ресурс в список, цикл и так далее - то чтобы это происходило один раз для всех потоков а если это цикл - то все потоки включались в него в него один и действовали сообща.

    Просто это уже реально не смешно - когда за месяц не могу скрипт сделать - и поверьте дело не во мне - я zennoposter за несколько часов освоил и применял успешно - и буквально 2 с лишним месяца назад купил лицензию - от которой позже отказался - ждал премиум BAS - в пользу BAS а сейчас даже не знаю - правильно ли сделал. Я ни в коем случае не хочу Вас обидеть - но поставленные Вами приоритеты - неправильные - я имею в виду магазин и тд. Может сначала сделать так. чтобы любой человек пришедший к BAS хотф бы за пару дней разобрался и начал использовать по назначению.... Я реально вижу что народ не задерживается - новички приходят - задают ВСЕГДА ОДНИ И NT ;T ВОПРОСЫ И СВАЛИВАЮТ. Увы пока это так.....


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.