Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Закликивание на странице.


Рекомендуемые сообщения

Привет всем!

У меня достаточно серьезная проблема с "закликиванием" на сайте. Т.е. скрипты написаны правильно но при быстрой отправке большого количества POST или GET за короткий промежуток времени часто случается так, что скрипт может к примеру вместо одного раза - несколько раз сделать в БД INSERT или любую другую операцию.

Наглядный пример - к примеру скрипт:

<?..... инициализация БД .....$result=mysql_query("SELECT int_field FROM Table1 WHERE user_id='1'");$param=mysql_fetch_array($result);if ($param["int_field"]==1){ mysql_query("UPDATE Table1 SET int_field=int_field+1 WHERE user_id='1'");}?>

это только пример чтобы Вы поняли о чем идет суть (ясное дело что в данном случае можно это все сделать одним запросом).

Ну вот если скрипт запустить не 1 раз, а несколько раз за секунду, бывает такое что к примеру этот UPDATE происходит не 1 а много раз.

Причина тому:

А потому что при доступе к БД на её изменение технически происходит пауза (UPDATE ставится в очередь на исполнение) и если сервер достаточно нагружен - обе копии скрипта могут дойти до UPDATE и ждать очереди, а как только она к ним придет - 2 раза сработать... т.е. проигнорировать условие в if...

Наверное сложно объяснил, но по другому и не знаю как объяснить. Факт в том что с этой проблемой я уже более года борюсь... проблема то ли в настройках сервера, то ли в скриптах... Исправляю это всякими транзакциями и.т.д. методами... Но ведь неужели нету какого-то способа по проще? Или никто с этим не сталкивался ранее?

Всем заранее спасибо за помощь в разрешении вопроса!

Ссылка на комментарий
Поделиться на другие сайты

bmmshayan

Собственно использование транзакций и есть стандартный подход для решения подобных проблем.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...