@beginer123

Одновременный запуск 1 URL двумя разными пользователями?

пытаюсь понять суть
Допустим есть url при обращении к которому выполняется некий скрипт
/beckend_script
Для простоты допустим что скрипт берет из базы данных число и умножает его на 2
Что будет если 2 пользователя одновременно запустят этот урл?
1)скрипты запустятся по очереди? т.е было число 10, станет 10*2=20 потом 20*2=40?
2)или одновременно как то будет? т.е оба получат число 10, и оба занесут в БД итого=20?
И если 2 вариант, ка сделать так чтобы 2 скрипт выполнялся только после выполнения первого?
Понимаю что этот пример будет очень быстро работать, но допустим там долгий скрипт
вообще я имел ввиду не конкртено этот пример,а вообще логику обработки
Т.е допустим не 2 а 100 запросов от 100 юзеров
Как сделать так чтобы они в порядке очереди исполнялись?эти 100 скриптов?
Всегда ли скрипт сможет определить очередь?
что если 2 пользователя запустят скрипт в одну и туже милисекунду?
  • Вопрос задан
  • 363 просмотра
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Скрипты запустятся одновременно. Результат будет зависеть от того, как именно вы этот скрипт написали. Если умножение делается одном запросом SET `value` = `value`*2, то всё будет работать нормально. Если сначала делается выборка, затем умножение в клиенте, затем запись, то может возникнуть состояние гонки. Чтобы его избежать надо использовать блокировки таблиц/строк, например через SELECT FOR UPDATE
Ответ написан
@moh-mog-drinks
Нет никаких гарантий порядка выполнения, если вы САМИ этот порядок не обеспечили.
Поэтому может быть что угодно:
1)скрипты запустятся по очереди? т.е было число 10, станет 10*2=20 потом 20*2=40?
2)или одновременно как то будет? т.е оба получат число 10, и оба занесут в БД итого=20?

Существует множество способов избежать этого:
Флаги, транзакции, очереди.
Выбирайте тот, что вам больше подходит.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы