Одно дополнение.
Пару раз встречал случай когда такой вариант не срабатывал (текст не кликался), но можно было кликнуть элемент который его содержал.
Приходилось через селектор брать родительский элемент этого текста (или как-то так, точно уже не помню).
сделать так чтобы на ОДИН и тот же кубик не набросилось одновремененно несколько потоков ?
-
Вообщем поток не устанавливает прокси пока не обнулится некая глоб переменная, которая 1 пока какой либо из потоков в процессе установки прокси. Как поток установил прокси - обнуляется глобальная переменная и установка прокси доступна другому потоку.
Кто первый того и тапки.Как справиться с проблемой что поток завис, вывалился или просто прокси сломалась надолго и из за этого глоб переменная не обнуляется? стопорит очередь
у меня такая мысль - мониторить время, если поток больше 90сек лагает, его выкидывать наверх и обнулять глобальную, давая тем самым возможность любому другому потоку работать. а ? -
А почему так сложно? Я просто загоняю прокси в ресурс, и оттуда беру по одной прокси когда надо, в свойствах ресурса ставишь что использовать его можно только один раз, это значит что только один поток за раз сможет брать этот прокси. И далее твоя сотня прокси будут крутится по кругу.
-
@kuzkuz Так а в чем принципиальная проблема не использовать ту схему которую я озвучил выше? Из ресурса берется прокся, если она взята одним потоком другой ее взять не может, (потому что так прописано в свойствах ресура) после того как она перестает работать берется другая прокся, а первая освобождается для других потоков. Если же поток выполнил работу и перезапускается, прокся так же освобождается и опять доступна всем потокам.
Просто в свойствах ресурса надо поставить:
Успешных использований - (тут пишем какую-то большую цифру)
Ошибочных использований - (тут пишем так же большую цифру)
Количество одновременных использований - тут должна стоять 1 (это значит что только один поток будет использовать одну строчку из ресурса в один момент времени).Дальше если все прокси задаются в ресурсе на старте, то ставь галочку только на чтение, если со временем туда будут добавятся новые прокси, ставь галочку еще и на запись, но тогда надо будет заморачиваться с внесением прокси после использование опять в ресурс.
-
парни. пусть это будет не прокси.
пусть это будет кубик добавления в базу.
теперь перечитываем первый пост такВообщем поток не добавляет строки/группы строк в базу пока не обнулится некая глоб переменная, которая 1 пока какой либо из потоков в процессе добавления строки/группы строк в базу. Как поток записал строку в базу - обнуляется глобальная переменная и добавление строки/группы строк доступно другому потоку.может так поймете что задача - сделать так чтобы на ОДИН и тот же кубик не набросилось одноврмененно несколько потоков. Все работает круто, КРОМЕ того что может поток выпадать и тогда глоб переменная не обнуляется и резервирование не освобождается. Как решить пробелму?
странно что с первого поста это не понятно. я же очевидно все описал. видимо "прокси" сбивает с толку -
Да мы то всё поняли.
Проблема с вылетанием потоков - это один вопрос.
Использование глобальной переменной для чека потоками - это второй вопрос, на который тоже ответы могут быть разные в зависимости от задачи и скрипта.
Логика скрипта какая - тоже важно. Разный алгоритм - разные траблы... и это уже третье.
База не база - это вообще уже другое. Я вот файловую систему предпочитаю использовать, и никаких проблем не вижу в этом. Благо ситуация позволяет.Мы вот в душе не чаем что там у тебя нафигачено, а ты пытаешься нам доказать, что мы неправильно что-то думаем.
Каждый энтузиаст бы с удовольствием помог разобраться, если бы понятно было что как устроено.
Вот хотя бы что там у тебя вылетают потоки?
У меня ничего не вылетает и мне сложно понять. -
@IvanM Использование глобальной переменной для чека потоками - это второй вопрос, на который тоже ответы могут быть разные в зависимости от задачи и скрипта.
Задача: потоков от 1 до 100. Кубик №45362373, там код который выполняется 2-10 сек. Нужно сделать одномоментно доступ к нему только одному потоку. Как только поток отработал кубик №45362373 - кубик становится доступен любому следующему потоку.
Тебе спасибо, что подключаешься и хочешь помочь, но вы усложнили.
-
@kuzkuz Тогда ты сам ответил на свой вопрос, ставишь условие, если поток не отработал за какое-то определенное время, обнуляй глобальную переменную и перезапускай поток. Если по ошибке валится, найди где валится и ставь условие если произошла ошибка обнуляй глобальную переменную и перезапускай поток.
-
Еще через асинхроннку можно. Чтобы поток перебирал потоки: спрашивал, занят ли поток-исполнитель и давал ему задачу и прокси. Ну и чтобы руководящий поток ждал ответа - успех не успех. И в соответствии с этим дальше поступал.
Ну и чтобы рандомно выбирал из числа потоков-исполнителей к кому обратиться, если это важно.