我最近在PHP中一直在做一些web开发工作,这导致我在一般的语言上进行研究。到目前为止,我不需要使用它来与数据库进行交互,但我知道它提供了很多方便的功能。尽管我知道基本的SQL,并且已经在数据库中对数据进行了基本的操作,但我不明白Web/PHP/Javascript/SQL基于PHP/Javascript/SQL的Web开发人员如何能够管理修改相同数据的用户同时。PHP和并发
例如,假设您有一个二十一点的网站,用户在注册时将用户划分为两个团队中的一个。每当用户赢得比赛时,他们的一部分奖金将被添加到该球队的总额中。
因此,可以说对于这是否看起来像这样功能的伪代码:
...
$total = mysql_query("SELECT score FROM team1");
$total = $total + $mytotal;
mysql_query("UPDATE team1 SET score='".$total."'");
...
如果两个玩家在玩的同时,很可能是他们都将调用之前的其他选择人们有机会增加和更新表格,因此一个用户的更改将立即被覆盖。
我的问题是,如何避免这种情况?它是在代码级使用PHP完成的,还是由您使用的任何数据库提供的功能有助于防止这种情况?
我一直在做一些研究,似乎PHP提供了一个semaphore机制,我也注意到mysql提供了一个LOCK table feature。但是,我不确定这些中的哪一个,如果有的话,在实践中使用。
感谢大家对我是从学习一些伟大的答案 - 但我更期待的是什么更复杂的并发问题包括PHP,最好的做法一行SQL不适合。 (对不起,如果我的例子误导了) – 2009-11-11 04:18:16