PHP和并发

前端之家收集整理的这篇文章主要介绍了PHP和并发前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近在 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.但是,我不确定这些中的哪一个,如果有的话,在实践中使用.

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

猜你在找的PHP相关文章