@Kinokio use sql instead
Бесконечный перебор БД
-
А разница? Каждый поток выполнит данное действие и сформирует одинаковый список без пометок, и будет брать одинаковые данные. Ведь формируется список, а чтобы получить из списка строчку применяю "парсить строку" и каждый поток запишет первое одинаковое значение. При этом перейти к следующему, как я понял, можно только с форейч, т.к. галочка "повторное использование" есть только у ресурсов, а не у переменных
-
@kuzkuz А потом мне переставлять на 2 и т.д.? Я же говорю, скрипт Должен крутиться без остановки! Он пройдет всю бд, на втором круге список все тот же, но в твоей колонке будет стоять 1, а значит чтобы на след. круге он взял строки, содержащие эту колонку, нужно дополнительно ввести переменную и в конце делать интерацию на 1. Если я правильно тебя понял, конечно.
-
@DraikKin said in Бесконечный перебор БД:
@kuzkuz А потом мне переставлять на 2 и т.д.? Я же говорю, скрипт Должен крутиться без остановки! Он пройдет всю бд, на втором круге список все тот же, но в твоей колонке будет стоять 1, а значит чтобы на след. круге он взял строки, содержащие эту колонку, нужно дополнительно ввести переменную и в конце делать интерацию на 1. Если я правильно тебя понял, конечно.
Бери данные в цикле, сперва с 0, потом с 1, потом с 2 в той колонке.
Получи значение, прибавь и перезапиши
Все просто
если с значение 0 результатов нет переходим к 1 и т.д -
В любом случае провел эксперимент, первым действием сделал перезагрузить список, вторым вызвал функцию в многопотоке, в которой прописал "парсить строку из ресурса, убрав галочку "использовать повторно". В итоге когда вызывается функция каждый поток парсит следующую строку, работает с ней, а т.к. каждый поток похоже резервирует свою строку, то первый освободившийся поток берет следующую и так пока не кончится список в ресурсе. А т.к. данный ресурс был вызван внутри функции, внешняя функция не видит изменений в ресурсе и при типе запуска "повторять" он обрабатывается постоянно.
Первое же действие "перезагружать список" позволяет работать с обновленной бд и вызываемая функция будет всегда получать обновленные данные. -
@DraikKin said in Бесконечный перебор БД:
@kuzkuz Так может дойти и до 9999999999999 )))
Выше написал вариант проще. Но поймал сейчас на мысли, если при обновлении бд не останется строк, то скрипт закроется ведь) Надо попробовать зациклить переходом к метке
.Как так? Прерывайте цикл и все...
-
@DraikKin Если я вас правильно понял, то ваша задача решается стандартными настройками ресурса, просто поставьте число успехов и неудач для ресурса побольше и еще можно поставить галочку обновлять, тогда счетчики успехов и неудач будут скидываться и ресурс точно никогда не закончится

-
@UserTrue Коряво, но подойдет для статической таблицы. Коряво потому что нужно высчитывать за какое время обрабатывается вся таблица и такое время нужно задать в обновлении. Все потому, что при парсинге строк из ресурса убираются строки и если обновление происходит быстрее, чем пройдены все строки ресурс восстанавливается и скрипт не успевает дойти до последних строк, как начинает все заново. А с обновляемой таблицей так вообще не вариант, т.к. неизвестно через какое время появятся новые строки и сколько их вообще будет и какое время понадобится на обработку.
Описанный выше вариант подходит полностью. По крайне мере на начальном этапе, а там с подключением проксей, обновлении таблиц и еще кое каких данных, видно будет)
Может, конечно, на том же питоне все это удобней было бы, но я освоил только чтение/запись в файл, запросы и обработку json. Многопоток, обработчик ошибок, сколько не читал, так ничего и не понял)