当前位置:首页 > PHP > 正文内容

PHP高并发下数据库值更新的问题

高老师9年前 (2017-08-04)PHP2452

(1).创建数据库test ,创建表shop(字段id,total),商品id是1,商品总数10

    QQ图片20170804220651.png

(2).PHP模拟购买,商品数量大于0才能购买

<?php
//连接数据库
$con=mysqli_connect("192.168.2.186","root","root","test");

//查询商品数量是否大于0
$res=mysqli_fetch_assoc(mysqli_query($con,'SELECT total FROM shop WHERE id=1 LIMIT 1'));

if($res['total']>0){
	mysqli_query($con,'UPDATE shop SET total=total-1  WHERE id=1');
	
}
unset($res);
mysqli_close($con);
?>

(3).ab.exe进行高并发测试

 ab -n 500 -c 500  http://test.cn/

(4).数据库结果:

    QQ图片20170804220550.png

   高并发下这样完全不行

(5).我们可以使用where条件来处理,更新的时候加上where条件即可,更新的时候更新失败说明库存已经不足

<?php
//连接数据库
$con=mysqli_connect("192.168.2.186","root","root","test");

//查询商品数量是否大于0
$res=mysqli_fetch_assoc(mysqli_query($con,'SELECT total FROM shop WHERE id=1 LIMIT 1'));

if($res['total']>0){
	mysqli_query($con,'UPDATE shop SET total=total-1  WHERE id=1 and total>0');
	
}
unset($res);
mysqli_close($con);
?>

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/39.html

分享给朋友:

“PHP高并发下数据库值更新的问题” 的相关文章

PHP获取原始数据

PHP获取原始数据

在项目中需要对图片进行裁剪,前端裁剪完成发送base64给后端,但是很意外的PHP获取到的数据和前端有点差距,之前我都是先加密,后端解密,但是这次依然不行。于是使用filter_input方法轻松解决。$base64 =  filter_input(INPUT_POST...

 php max input vars,max input vars限制,max input vars 设置

php max input vars,max input vars限制,max input vars 设置

在一个正式项目中操作人员提交239个产品信息进行保存,但是系统却提示没有提交239个产品,于是开启错误信息,显示如下:Warning: Unknown: Input variables exceeded 1000. To incr...

【二】PHP多进程学习-进程信号管理

【二】PHP多进程学习-进程信号管理

(1).学习目标:    了解常见信号类型(百度PHP支持的信号类型),(2).相关函数学习:    (2.1).pcntl_signal函数用于设置一个信号管理器接收进程信号,参数1:信号类型,参数2:回调函数,用于在接收到参数1类型的信...

php finally使用

php finally使用

<?php /**  * @throws Exception  */ function curl() {     throw  new \Exception('err...

PHP Startup: Unable to load dynamic library 'C:\php\ext\php_curl.dll找不到指定的模块

PHP Startup: Unable to load dynamic library 'C:\php\ext\php_curl.dll找不到指定的模块

最近在编写windows php多线程的东西,从官网下载了PHP的线程安全版,尝试开启curl扩展extension=php_curl.dllphp -m 却提示 PHP Startup: Unable to load dynamic library 'C:\php\ext\php_curl...

php jsonp转json,php jsonp转数组,php jsonp转对象

php jsonp转json,php jsonp转数组,php jsonp转对象

将jsonp转为PHP数组和对象。/**  * jsonp转数组|Jsonp转json  * @param string $jsonp jsonp字符串  * @param bool $as...