2 дня пытаюсь уже решить проблему, спрашивал часами чатгпт с примерами, но всё равно проблема остается
у меня есть такой код:PHP:
if ( $user_damage > $battle[‘health’] ) { try { mysql_query(‘UPDATE `basement_clans` SET `json_key` = JSON_SET(`json_key`, \’$.»‘ . ‘key_’.($battle[‘boss_id’] + 1) . ‘»\’, JSON_EXTRACT(`json_key`, \’$.»‘ . ‘key_’.($battle[‘boss_id’] + 1) . ‘»\’) + 1), `json_limit` = JSON_SET(`json_limit`, \’$.»‘ . ‘boss_’.$battle[‘boss_id’] . ‘»\’, JSON_EXTRACT(`json_limit`, \’$.»‘ . ‘boss_’.$battle[‘boss_id’] . ‘»\’) + 1), `json_medals` = JSON_SET(`json_medals`, \’$.»‘ . ‘boss_’.$battle[‘boss_id’] . ‘»\’, JSON_EXTRACT(`json_medals`, \’$.»‘ . ‘boss_’.$battle[‘boss_id’] . ‘»\’) + 1) WHERE `clan` = ‘.$clan[‘id’].‘ AND `jail` = ‘.$user[‘reset’]); } catch (Exception $e) { } }проблема: когда одновременно бьют несколько пользователей или более, то засчитывает столько сколько было одновременных ударов
нужно: чтобы был 1 запрос вне зависимости сколько было этих одновременных ударов
использовал: мемкеш, блокировку запросов, атомарные операции, циклы
ничего не помогает, уже не знаю что делать (есть 3 таблицы:
basement_clans (id, clan, json_key, json_limit, json_medals, jail) — С откуда берутся ключи (с которыми и проблема) ($clanData)
_basement_battle (id, clan_id, boss_id, health, jail, time) — Само сражение ($battle)
_basement_member (id, user_id, user_health, fight_id, clan_id, boss_id, damage, jail) — Участники сражения (fight_id -> id) ($member)
вопрос конечно бредово описан…. тут человек то не поймет не то что чатгпт…
как я понимаю суть такая — есть некая таблица — туда нужно внести обновление… но только одно — видимо за какой то промежуток времени .. так?
тогда надо ввести доп поле — датавремя последнего запроса — в вашей терминологии «удара» ….
и при обновлении — дополнительно смотреть — сколько времени прошло с момента последнего запроса… например 1 в 5 минут …. — в where добавить — AND last_online > now() + interval 5 minute или что там нужно
суть должны понять