Каким образом можно обеспечить aCid при условии одновременного запроса нескольких пользователей?
В общем-то вопрос прост: каким образом я обеспечиваю согласованность операций при условии, что множество клиентов может обратиться с запросом к базе данных?
Теперь подробнее. У меня есть некий абстрактный раунд игры. Клиенты получают информацию об игре посредством Polling (Ajax запросов). В момент, когда игра заканчивается, возникает ситуация, что одновременно множество клиентов обращается к серверу с просьбой открыть новый раунд. Новый раунд - новая запись в базе данных.
Логика моего кода проста: я делаю запрос к базе на извлечение. Если нет записей, я делаю запрос на вставку нового раунда.
Потенциальная проблема: множество клиентов одномоментно обращаются к серверу, сервер обрабатывает множество входящих соединений (apache + php), каждый из них может потенциально создать свою комнату и эту ситуацию нужно как-либо обойти. Можно, пожалуйста, советы?
Я использую для таких случаев редис. Но просто он используется почти на всех проектах, где я участвовал. А вообще можешь просто создавать где-нибудь файл при блокировке с уникальным именем для группы и удалять его при разблокировке.