У меня есть проблема, может быть, вы можете мне помочь:Несколько одновременных запросов к MYSQL таблице
У меня есть несколько запросов, используя Ajax для моего PHP функции, например, в 10-00.
Моя функция PHP файл:
public function calculate(){
$result = DB::query('SELECT * FROM `results` WHERE `time` > DATE_SUB(NOW(), INTERVAL "25" SECOND) ORDER BY `gameid` DESC LIMIT 1');
if (intval($result->num_rows) > 0) {
return json_decode($result->fetch_object()->data);
} else {
/*RESULT CALCULATION CODE /*SELECT FROM `players`....*/
$publish_date = date("Y-m-d H:i:s");
$result = DB::prepare("INSERT INTO `results` (`data`, `time`) VALUES (?,?) ON DUPLICATE KEY UPDATE `data` = VALUES(data), `time` = VALUES(time)");
$result->bind_param("ss", json_encode($arr), $publish_date);
$result->execute();
$result->close();
DB::query('TRUNCATE TABLE `players`'); /*WE CLEAN TABLE HERE*/
return $arr;
}
}
Так один из моих запросов клиентов должен рассчитать результаты и хранить его в таблице results
на первом.
Другие запросы должны получить информацию от results
таблица без новых вычислений. Как я могу решить эту проблему (LOCK TABLE ???)? Спасибо!
Попробуйте ВСТАВИТЬ, если INSERT не сработает (с уникальным ключом), тогда кто-то избил нас, поэтому SELECT. –