Обрабатывать действие дважды - как это предотвратить? - PullRequest
3 голосов
/ 04 июня 2011

У меня проблема.У меня есть собственная браузерная игра, и есть что-то вроде

SELECT * FROM attack WHERE proc = 0 AND endtime < $current_time

, она работает, но проблема в том, что, когда в сети более 10 пользователей, есть большой шанс, что 2 пользователя нажмут одновременно = атакаобрабатывается дважды.Однако я не хочу увеличивать количество запросов, чтобы столбец, например, был заблокирован.Кто-нибудь знает решение?

1 Ответ

4 голосов
/ 04 июня 2011

То, что я думаю, это ...

Вместо того, чтобы просто хранить 0000-00-00 00:00:00, я думаю, вы можете хранить более точное время и дату, например 0000-00-00 00:00:00.00000 (милисекунды)Шансы на одновременное действие значительно уменьшатся.

Так что если вы сравните с $ current_time, $ current_time должен быть в формате 0000-00-00 00: 00: 00.00000 тоже

здесь - это способ получения времени в миллисекундах

Примечание: вы можете изменить дату ("Ymd \ TH: i: s") на дату ("Ymd H: i: s")если вы не хотите 'T'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...