@FastSpace said in Таймаут во время выполнения LoadPage data:text/plain:
Уже 100500 раз решение этой проблемы известно.
hello , Can you help me this issue ?
Я использую модуль 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 запроса:
Спасибо. А отдельные функции нельзя блокировать? Имею в виду, что через глобальную переменную в данной реализации блокируются все остальные потоки независимо от тех действий, которые они выполняют в данный момент. А нельзя ли сделать, чтобы потоки одновременно не выполняли конкретную функцию, а если находятся вне этой функции, то продолжали работу? Я знаю, что вряд ли, но вдруг )
Можно. Смотрите тестовый скрипт, там максимально просто всё сделано