@suvorov_jr2 Спарсить все ссылки сайта по шаблону и не придётся проверять на дубли , а просто удалять из txt при успешном посте. Или если у сайта id статьи в виде цифры ,как здесь https://otvet.mail.ru/question/231973765 , то сгенерируй лям цифр для статей и рассылай комменты без проверки на дубли. Ещё можно проверять перед постингом, наличие на странице уникального слова, которое есть только в твоём спаме.
Как блокировать поток на время выполнения SQL запроса
-
Я использую модуль SQL с базой данных mysql. Беру строку из таблицы с минимальной датой. Типа такого:
SELECT * FROM table ORDER BY update_time ASC LIMIT 1и затем пишу текущее время:
UPDATE table SET update_time=[[TIME]] WHERE id=[[ID]]После апдейта я уверен, что строка повторно возьмется в самом конце (данные в моем кейсе должны браться по кругу).
Но часто все равно хватает времени, чтобы несколько потоков взяли одну и ту же строку.SELECT ... FOR UPDATEприводит к ошибке таймаута.
Как блокировать остальные потоки на время выполнения этих двух запросов?
-
@thepappo said in Как блокировать поток на время выполнения SQL запроса:
Как блокировать остальные потоки на время выполнения этих двух запросов?
Ищите на форуме пример реализации блокировки потоков через глобальную переменную для работы с буфером обмена.
-
@thepappo said in Как блокировать поток на время выполнения SQL запроса:
@Fox я видел ваш ответ в соседней ветке и искал полчаса, но что-то так найти и не смог (
https://community.bablosoft.com/topic/4672/hello-need-a-little-help/5
-
Спасибо. А отдельные функции нельзя блокировать? Имею в виду, что через глобальную переменную в данной реализации блокируются все остальные потоки независимо от тех действий, которые они выполняют в данный момент. А нельзя ли сделать, чтобы потоки одновременно не выполняли конкретную функцию, а если находятся вне этой функции, то продолжали работу? Я знаю, что вряд ли, но вдруг )
-
@thepappo said in Как блокировать поток на время выполнения SQL запроса:
Спасибо. А отдельные функции нельзя блокировать? Имею в виду, что через глобальную переменную в данной реализации блокируются все остальные потоки независимо от тех действий, которые они выполняют в данный момент. А нельзя ли сделать, чтобы потоки одновременно не выполняли конкретную функцию, а если находятся вне этой функции, то продолжали работу? Я знаю, что вряд ли, но вдруг )
Можно. Смотрите тестовый скрипт, там максимально просто всё сделано