Jump to content
СофтФорум - всё о компьютерах и не только

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


Recommended Posts

Привет всем!

У меня достаточно серьезная проблема с "закликиванием" на сайте. Т.е. скрипты написаны правильно но при быстрой отправке большого количества 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...

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

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

Link to comment
Share on other sites

bmmshayan

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...