加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP和并发

发布时间:2020-12-13 13:16:55 所属栏目:PHP教程 来源:网络整理
导读:我最近在 PHP上做了一些Web开发工作,这使我一直在学习语言.到目前为止,我不需要使用它来与数据库进行交互,但我知道它提供了许多方便的功能. 虽然我知道基本的SQL并且已经在数据库中处理数据的基本操作,但我不明白基于PHP / Javascript / SQL建立网站的Web开
我最近在 PHP上做了一些Web开发工作,这使我一直在学习语言.到目前为止,我不需要使用它来与数据库进行交互,但我知道它提供了许多方便的功能.

虽然我知道基本的SQL并且已经在数据库中处理数据的基本操作,但我不明白基于PHP / Javascript / SQL建立网站的Web开发人员如何能够管理同时修改相同数据的用户.

例如,假设您有一个二十一点网站,用户在注册时将用户划分为两个团队中的一个.每当用户赢得游戏时,他们的部分奖金将被添加到该团队的运行总计中.

那么让我们说这个函数的伪代码看起来像这样:

... 
$total = mysql_query("SELECT score FROM team1");
$total = $total + $mytotal;
mysql_query("UPDATE team1 SET score='".$total."'");
...

如果两个玩家同时玩,很可能他们都会在另一个玩家有机会增加和更新表之前调用SELECT,因此一个用户的更改将立即被覆盖.

我的问题是,如何避免这种情况?它是在代码级使用PHP完成的,还是由您使用的任何数据库提供的功能有助于防止这种情况?

我一直在做一些研究,似乎PHP确实提供了semaphore机制,我也注意到mysql提供了LOCK table feature.但是,我不确定这些中的哪一个,如果有的话,在实践中使用.

如果您的真实世界问题比这个简单的示例更大,您应该将事务与锁定表结合使用,以确保用户不会相互覆盖.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读