php大数据大并发 php大数据处理思路( 二 )


4、数据库优化
(1) 数据库缓存
(2) 分库分表,分区
(3) 读写分离
(4) 负载均衡
5、web 服务器优化
(1) nginx 反向代理实现负载均衡
(2) lvs 实现负载均衡
php解决高并发?php
2 //优化方案1:将库存字段number字段设为unsigned,当库存为0时 , 因为字段不能为负数,将会返回false
3 include('./mysql.php');
4 $username = 'wang'.rand(0,1000);
5 //生成唯一订单
6 function build_order_no(){
7return date('ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
8 }
9 //记录日志
10 function insertLog($event,$type=0,$username){
11global $conn;
12$sql="insert into ih_log(event,type,usernma)
13values('$event','$type','$username')";
14return mysqli_query($conn,$sql);
15 }
16 function insertOrder($order_sn,$user_id,$goods_id,$sku_id,$price,$username,$number)
17 {
18global $conn;
19$sql="insert into ih_order(order_sn,user_id,goods_id,sku_id,price,username,number)
20values('$order_sn','$user_id','$goods_id','$sku_id','$price','$username','$number')";
21returnmysqli_query($conn,$sql);
22 }
23 //模拟下单操作
24 //库存是否大于0
25 $sql="select number from ih_store where goods_id='$goods_id' and sku_id='$sku_id' ";
26 $rs=mysqli_query($conn,$sql);
27 $row = $rs-fetch_assoc();
28if($row['number']0){//高并发下会导致超卖
29if($row['number']$number){
30return insertLog('库存不够',3,$username);
31}
32$order_sn=build_order_no();
33//库存减少
34$sql="update ih_store set number=number-{$number} where sku_id='$sku_id' and number0";
35$store_rs=mysqli_query($conn,$sql);
36if($store_rs){
37//生成订单
38insertOrder($order_sn,$user_id,$goods_id,$sku_id,$price,$username,$number);
39insertLog('库存减少成功',1,$username);
40}else{
41insertLog('库存减少失败',2,$username);
42}
43}else{
44insertLog('库存不够',3,$username);
45}
46 ?
PHP如何解决网站的大数据大流量与高并发使用缓存 , 比如memcache,redis,因为它们是在内存中运行,所以处理数据,返回数据非常快,所以可以应对高并发 。
2.增加带宽和机器性能,1M的带宽同时处理的流量肯定有限,所以在资源允许的情况下,大带宽 , 多核cpu,高内存是一个解决方案 。
3.分布式,让多个访问分到不同的机器上去处理,每个机器处理的请求就相对减少了 。
简单说些常用技术,负载均衡,限流,加速器等
【php大数据大并发 php大数据处理思路】关于php大数据大并发和php大数据处理思路的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

推荐阅读