Дропнуть потоки
-
Ребят, может кто подскажет мысль по реализации такой темы:
Авторизуюсь на сайте в одном потоке, далее перехожу к многопоточной функции 10 потоков отпровляет GET но когда 8 поток отправляет запрос то вылезает капча.
Теперь вопрос как остановить 9 и 10 поток или чтобы после вылета капчи эти потоки допустим по if слить в другую задачу например вывод лога.
То есть чтобы 9 и 10 поток уже не отправляли запрос.
-
@Zenodrot Есть функция получения номера потока, получаете номер и делаете условие.
-
@Zenodrot А смысл делать 10 потоков если на 8 вылазит капча? Делай по 7 :)
Плюс можно сделать Проверить видин ли объект на капчу, далее IF, если true, то завершить поток, если false, то дальше выполнять скрипт..
-
делаю так когда 8 потоком получаю капчу, устанавливаю переменную что мол капчу словил, чтобы перед запросом 9 поток ее сверял и если в переменой есть упоминание о капче то 9 поток завершается.
НО В ЭТОМ И ПРОБЛЕМА ! как только я добавляю экшн с условием в многопоточную функцию у меня BAS крашится или просто отрабатывает до условия и пишет что поток 1 успешно завершен. 2,3,4.... потоки невыполняються
-
@Zenodrot У меня все экстрасенсы в отпуске.. Раз крашится, значит где то у тебя ошибка. Кидай проект, поглядим.
-
я кажется нашел багу,сейчас попробую переделаю, если опять бага появиться то отпишу
-
@Fox выкладываю проект переписал его без get запросов, сделал на примере с записью строки.
- Устанавливаем в переменку 0
- Вызываем функцию в несколько потоков
- Через условие смотрим равно ли переменка 3ки (это количество строк которые нужно записать в файл) если не ровно 3 то пишем строку и увеличиваем переменку с нуля на 1
- если переменка = 3 то четвертый и пятый поток должен по идее идти мимо записи.
Суть такая - запуск скрипта в 5 потоков 1,2,3 поток делают запись и дергают счетчик до 3,
потоки 4,5 мимо. Ну должны как я понял. Ну а если я не так делаю, то как запилить правильно в этом случае?Имено важно распределить патоки чтобы они у меня запросы не выполняли лишнии так как это палево перед сайтом что получая капчу "я" пытаюсь пройти нагло засылая следующий запрос, капча вылетает рандомно ее не угадаешь через сколько запросов она появляется по этому требуется после получения капчи уходить в завершения при этом слив последующие потоки а не пускать их на отработку ибо акку влепят бан.
0_1496262608483_tesst.xml
-
@Zenodrot я проект не смотрел, но сразу спрошу, переменная используется обычная? если да, то остальные потоки ее не увидят, даже запущенные из этого потока. Нужно использовать глобальную переменную
-
@DrPrime пробовал и глобальную одна и тажа борода. Скрипт полностью не отрабатывает так как логи не показывает. Сходу пишет что паток успешно завершен. Я пытался логами отловить в каком месте ему не нравиться - это место перед условием в упор не видит дальнейшие действия хоть по True хоть Fаlse.
если в один поток юзать по шагам в отладке все четко.
-
@Zenodrot said in Дропнуть потоки:
пробовал и глобальную одна и тажа борода.
Не знаю как вы пробовали) , я переменную NEW_VARIABLE сделал глобальной , и получил результат который вам нужен.
-
@santilo да, теперь то что нужно, видать я перекипел пока тестировал скрипт, куда деваться 2 й день только BAS юзаю, благодарю всех, вопрос с потоками РЕШОН !