Проблема в многопотоковом чекере прокси.
-
Вот тестовый чекер и файл прокси. В файле прокси 100 строк прокси, сам файл лежит в директории C:\proxy\1.txt
Настройки ресурса:
Успешный и ошибочных использований: 1
Количество одновременных использований: 1
Время между использованиями: 1По логике когда заканчиваются строки прокси в файле, поток должен завершится, но этого не происходит. Поток просто висит и ни чего не делает.
Я прокоментировал каждый блок, чтобы это заметить. Пробовал увеличить время между использованиями, результат тот же, только дольше.
-
У меня в чекере в начале считается количество элементов в списке, создается переменная проверенных, затем в каждом цикле прибавляется 1 к переменной. Когда переменная равна количеству элементов в списке работа завершается.
-
@romanbiz А как ты организовал эту логику в многопотоке?
А вообще не в чекере дело, а в логике действий. Почему потоки останавливаются, не завершаясь. Чтобы потом в подобной ситуации знать что делать.
Ведь чекер можно любой написать, или скачать уже готовый, коих полно в инете. Да отдельно чекать файл перед запуском скриптов
-
Я изначально, когда только заметил этот косяк, подумал, что поток забирая последний прокси, записывает его в переменную. А когда в следующий раз пытается записать, ресурс ни чего не отдаёт и переменная не записывается, оставляя старое значение. Которое мусолится по кругу. Но тестовый чекер меня поставил в тупик.
Сейчас у меня скрипт с этим чекером работает. Всем потокам хватило прокси, кроме одного. Вот он и зациклился на последнем значении.[23:34:14] Поток №4 : Хороший прокси не сработал. [23:34:14] Поток №4 : Нашли хорошую прокси 103.58.73.202:8080 [23:35:15] Поток №4 : Хороший прокси не сработал. [23:35:15] Поток №4 : Нашли хорошую прокси 103.58.73.202:8080 [23:35:21] Поток №4 : Хороший прокси не сработал. [23:35:21] Поток №4 : Нашли хорошую прокси 103.58.73.202:8080 [23:36:14] Поток №4 : Хороший прокси не сработал. [23:36:14] Поток №4 : Нашли хорошую прокси 103.58.73.202:8080
-
@Fox Скрипт работает бесконечно, потому что вы поставили в конце каждого потока бесконечный цикл, если его убрать, то скрипт завершится самостоятельно когда закончатся прокси.
Вы правда рассчитываете, что скрипт завершится, когда последние 2 действия выглядят так?
Также обратите внимание, что пока поток использует ресурс, он не может быть использован другими потоками, более того они будут ждать того времени, пока другой поток закончит с ним действия.
Эта причина, по которой скрипт зависает не перед бесконечным циклом, а перед взятием ресурса.