Уникальный ответ из базы множестве запрсоов
есть подобный код
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect('localhost', 'root', '', 'test');
if(!$link) {
die('Ошибка подключения ( '.mysqli_connect_errno().' ) '.mysqli_connect_error());
}
$sql = "SELECT id,key FROM keys WHERE status = 1 LIMIT 1";
$result = $link->query($sql);
if ($result->num_rows > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo $row['key'];
$link->query("UPDATE `keys` SET `status` = '0' WHERE `id` = ".(int)$row['id']);
}
}
$link->close();
Его задача выдать из базы уникальный ключ. Взять первую запись у которой статус еще не выдано, показать ее пользователю, обновить статус.
Но есть проблема, что когда частые запросы, оно не успевает проставить статус и в итоге отдает один и тот же ключ а так быть не должно.
Я нагуглил про проблему race condition, но внятных каких то примеров как решить не нашел