社区
基础编程
帖子详情
PHP并发问题
ayayad
2011-08-29 06:08:30
打个比方:现在商城里就剩唯一的一件商品,卖完了就再也不会有了。
这时,有两个客户,在几乎相同的时间(假设相差无限接近0),提交了订单,要购买此商品。
那问题来了,这两份申请会被记录吗,还是只记录相对的前一份申请?
我理解是可能这两份申请都会被记录,因为服务器在接受前一份申请后还没来得及将数据库中的数量清0,下一份申请同样也能被执行。
我想请问,php有没有可以防止这一问题发生的机制??具体怎样实现,最好有个小案例什么的,呵
...全文
328
12
打赏
收藏
PHP并发问题
打个比方:现在商城里就剩唯一的一件商品,卖完了就再也不会有了。 这时,有两个客户,在几乎相同的时间(假设相差无限接近0),提交了订单,要购买此商品。 那问题来了,这两份申请会被记录吗,还是只记录相对的前一份申请? 我理解是可能这两份申请都会被记录,因为服务器在接受前一份申请后还没来得及将数据库中的数量清0,下一份申请同样也能被执行。 我想请问,php有没有可以防止这一问题发生的机制??具体怎样实现,最好有个小案例什么的,呵
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ayayad
2011-09-21
打赏
举报
回复
[Quote=引用 11 楼 phpnewnew 的回复:]
用phpadmin之类的图形界面看。不会的话就到mysql的后台输入 SHOW VARIABLES LIKE '%Engine%';
[/Quote]
谢了
黄袍披身
2011-09-04
打赏
举报
回复
[Quote=引用 9 楼 ayayad 的回复:]
引用 6 楼 phpnewnew 的回复:
看看你数据库是不是 InnoDB 是的话 就啥也不用弄了.默认一般也是这个类型的.
我的mysql装好apache就有了,,怎么查看是不是InnoDB类型??怎么查看,在哪查看
[/Quote]
用phpadmin之类的图形界面看。不会的话就到mysql的后台输入 SHOW VARIABLES LIKE '%Engine%';
黄袍披身
2011-08-30
打赏
举报
回复
[Quote=引用 5 楼 ayayad 的回复:]
当然是mysql数据库
写事务就能解决吗
写存储过程可以吗
各位说的具体点行不,,谢啦啊
[/Quote]
看看你数据库是不是 InnoDB 是的话 就啥也不用弄了.默认一般也是这个类型的.
ayayad
2011-08-30
打赏
举报
回复
当然是mysql数据库
写事务就能解决吗
写存储过程可以吗
各位说的具体点行不,,谢啦啊
jlzan1314
2011-08-30
打赏
举报
回复
如果是linux的话,使用flock()锁住,保证原子性.
ayayad
2011-08-30
打赏
举报
回复
[Quote=引用 6 楼 phpnewnew 的回复:]
看看你数据库是不是 InnoDB 是的话 就啥也不用弄了.默认一般也是这个类型的.
[/Quote]
我的mysql装好apache就有了,,怎么查看是不是InnoDB类型??怎么查看,在哪查看
黄袍披身
2011-08-30
打赏
举报
回复
[Quote=引用 6 楼 phpnewnew 的回复:]
看看你数据库是不是 InnoDB 是的话 就啥也不用弄了.默认一般也是这个类型的.
[/Quote]
当然这个只针对你的单条记录的写入更新。如果是多个更新需要一致的话 不用我说啦 当然要事务了.
helloyou0
2011-08-30
打赏
举报
回复
对,事务可以,
而对你这个情况,可能连事务都不需要,
因为如果就是一个update,只要在update后判断update是否有实际改动(检查affect_rows)即可,
如果你需要改动若干表而且要保持一致,就需要事务。
不建议自己lock表因为交给事物让数据库自己控制更安全高效。
存储过程并不能解决一致性问题,同样要通过事务。
PIGer920
2011-08-29
打赏
举报
回复
LOCK TABLES 进行操作
黄袍披身
2011-08-29
打赏
举报
回复
数据库问题,数据库一般都默认具备这样的功能,不过具体的看数据库的类型.具体的查看数据库的帮助
amani11
2011-08-29
打赏
举报
回复
一般这个并不由php来控制,
这是典型的数据库事务
根据你的数据库,你搜具体的用法好了,你的需求行级锁就可以了。。。access都支持事务
只要开心就好
2011-08-29
打赏
举报
回复
数据库有锁机制的。
你第一条sql去执行的时候,第二条sql不会同时执行的。
有先有后,这样的话,应该不会出现你担心的问题。
PHP
实战高
并发
大流量秒杀系统
本教程主要是
php
秒杀实战1 memcache存储用户信息2 cdn+oss秒杀页面加速3 redis消息队列防止超卖 4 前后端限流 限制ip访问次数5 消息队列rabbitmq。。。。 代码完全手撸
三个方法解决
php
并发
问题
解决
php
并发
问题
的方法有很多,具体可以使用的行级锁、乐观锁和的分布式锁等技术来解决。此外,还可以使用、多进程、多线程等技术来解决
php
并发
问题
。
【黄啊码】三个方法解决
php
并发
问题
【黄啊码】三个方法解决
php
并发
问题
php
使用redis锁解决
并发
访问的
问题
分享一个
php
使用redis加锁解决
并发
访问的
问题
。 1.
并发
访问限制
问题
对于一些需要限制同一个用户
并发
访问的场景,如果用户
并发
请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功。 例如换领优惠券,如果用户同一时间
并发
提交换领码,在没有加锁限制的情况下,用户则可以使用同一个换领码同时兑换到多张优惠券。 常见的业务逻辑代码如下: if A(可以换领)
基于
PHP
搭建高
并发
分布式集群系统思路
做了很多有关
php
项目,其中包括(P2P、电商、配送、CRM、OA以及银行智能风控系统解决方案)。我想对自己的工作成果经验总结一下,同时也算是一次升华。 项目中经常提到大流量和高
并发
的名词,听起来很让人害怕,无从下手,其实我们应该从实际的业务场景来规划应该如果去解决这些
问题
,正常情况下我们系统应该只是某个或者某几个服务压力非常大,其他业务负载不会太高,下面我从整体的架构来记录下思路,至于具体的实施方案,我在后续的文章会慢慢记录下来。 高
并发
大流量的系统架构应该是从单体架构到服务拆分逐渐演变而来,并不是
基础编程
21,886
社区成员
140,364
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章