Я разработал игру, которая работает с php и jquery через ajax.Разрешить только одну открытую запись за раз в mysql
По существу, когда запрос делается сервером, сервер создаст новую игру, если ее еще нет. Моя таблица базы данных для игр выглядит следующим образом:
id | closed | time
Где закрыт будет установлен в 1 раз игра закончена, и время является Отметка времени Unix, когда игра была создана.
Теперь важно то, что в любой момент времени в таблице может быть только 1 игра с закрытым = 0.
Для этого я использую следующий код PHP
$query = "SELECT id FROM games WHERE closed = '0' LIMIT 1";
$result = $this->database->query($query);
if ($result->num_rows == 0) {
$query = "INSERT INTO games_roulette SET time = '".time()."'";
$result = $this->database->query($query);
return $this->database->insert_id;
} else {
return false;
}
Вещь иногда 2 игры будут созданы, я полагаю, из-за 2 запросы отправляются в одно и то же время, как значения времени всегда то же самое, когда открыто 2 игры.
Есть ли способ, которым я могу иметь 100% уверенность, что в таблице никогда не будет 2 игры с закрытыми = 0?
вы можете заблокировать таблицу перед выбором и разблокировать ее после вставки. я бы поспорил, есть лучшие варианты –