Работа с буфером (надеюсь правильно выразился)

Serial

Новичок
Работа с буфером (надеюсь правильно выразился)

Два человека (или больше) обновляют страницу и посылают некоторые параметры через форму. Эти параметры заносятся в таблицу БД (MySQL).
Когда и первый, и второй человек послали параметры, они обрабатываются скриптом.. и результат заносится в БД (в другую таблицу, а старая обнуляется).

Иногда, если эти два человека одновременно нажимают кнопку обновить, данные обрабатываются 2 раза и в БД появляются два одинаковых результата :(

Как избежать данной неприятной ситуации?

Если кто-нибудь не понял, сформулирую другую задачу с такой же проблемой:
Есть страничка. На ней находится кнопка. Два пользователя нажимают эту кнопку. Происходит проверка (полученных данных из БД): не нажал ли кто-нибудь уже кнопку, и если нажал, то выводится информация о том, кто нажал. Если нет, то данные о нажатии (время и id пользователя) фиксируются в БД и страница обновляется.

Если два пользователся нажимают кнопку с минимальным интервалом (почти одновременно), то, когда проверяются данные из БД вторым пользователем, первый их еще не успел изменить.. Получается в этом случае скрипт выдаст информацию, что первым кнопку нажал 2-ой пользователь :(
 

WP

^_^
Расскажи реальную задачу. Что за форма, что за таблица?
 

WP

^_^
Я попросил описать задачу, а не название проекта :D Зачем обнулять таблицу?
 

Serial

Новичок
WP

А где здесь название? :-/

Обнуляется буфер... и не в этом суть.
 

WP

^_^
Serial
Точнее не название, а тип проекта.
А в чем тогда суть? Можно внятно?
 

Serial

Новичок
Задача:
- получить данные от одного человека и от другого
- после того как оба послали, обработать их и записать результат в лог (как раз в лог и заносятся двое одинаковых дынных)
- обнулить "буфер" и продолжать алгоритм до определенных условий
 

WP

^_^
Ну это гадание на кофейной гуще. Надо отстроить логику так чтобы повторок не было.
 

Serial

Новичок
WP

Ну а как настроить?

-~{}~ 06.06.06 11:45:

Никто не знает как решить проблему или она нерешаема?
 

_vampiro_

Новичок
IMHO вам эту тему не асилить ) в БК бои не хранятся в базе. У вас просто не хватит произвоительности никакой.

По теме:
Скрипт должен проверять наличие именно двух записей в первой табличке и потом уже их удалять и что-то писАть. Тем самым вы добьетесь своего результата - "Когда и первый, и второй человек послали параметры, они обрабатываются скриптом.. "
 

Serial

Новичок
_vampiro_

Так и делаю.. + даже ввел поле `upd` которое принимает значение '1', когда начинается обработка результатов.

А какую альтернативу можете предложить, если не использовать в данной ситуации MySQL?
 

Serial

Новичок
_vampiro_

Информация начинает обновляться в одну и ту же секунду с такой разницей:
первый - 0.71120
второй - 0.77360

Пока поле `upd` обновляется первым юзером, второй уже получил его неизмененное значение.
 

_vampiro_

Новичок
я не догоняю чего вы там делаете, но...

1. проверка данных.
2. выборка из буфера
3. если в буфере две записи - производим то-самое "магическое действие", записываем в нормальную таблицу и удаляем из буфера. Если в буфере нет записей-то просто инсертим в него данные.


таким образом, первый нажавший - положит в буфер. второй - тоже положит, и сама обработка данных произойдет при следующем запросе от любого из пользователей.
 

Serial

Новичок
_vampiro_
Всё именно так и есть!
При следующем обновлении данные обрабатываются и заносятся в лог. Всё работает нормально.
НО, если два юзера обновят страницу одновременно (с разницей в 0.06сек) в лог заносятся результаты дважды (одним юзером и вторым).

Yaponchick
А можно чуть подробнее? или где почитать?
 
Сверху