zoukankan      html  css  js  c++  java
  • redis 抢购秒杀

    <?php
    
    $conn = mysql_connect("127.0.0.1", "root", "root");
    if (!$conn) {
        echo "connect failed";
        exit;
    }
    
    mysql_select_db("big", $conn);
    mysql_query("set names utf8");
    
    $price = 10;
    $user_id = 1;
    $goods_id = 1;
    $sku_id = 11;
    $number = 1;
    
    //生成唯一订单号
    function build_order_no() {
        return date('ymd') . substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
    }
    
    //记录日志
    function insertLog($event, $type = 0) {
        global $conn;
        $sql = "insert into ih_log(event,type) values('$event','$type')";
        mysql_query($sql, $conn);
    }
    
    //模拟下单操作
    $store = 1000;
    $redis = new Redis();
    $result = $redis->connect('127.0.0.1', 6379);
    $res = $redis->llen('goods_store');
    
    for ($i = 0; $i < $store; $i++) {
        $redis->lpush('goods_store', 1);
    }
    //echo $redis->llen('goods_store');
    //下单前判断redis队列库存量
    $redis = new Redis();
    $result = $redis->connect('127.0.0.1', 6379);
    $count = $redis->lpop('goods_store');
    if (!$count) {
        insertLog('error:no store redis');
        return;
    }
    
    //生成订单
    $order_sn = build_order_no();
    $sql = "insert into ih_order(order_sn,user_id,goods_id,sku_id,price) values('$order_sn','$user_id','$goods_id','$sku_id','$price')";
    $order_rs = mysql_query($sql, $conn);
    
    //库存减少
    $sql = "update ih_store set number=number-{$number} where sku_id='$sku_id' and number>0";
    $store_rs = mysql_query($sql, $conn);
    if (mysql_affected_rows()) {
        insertLog('库存减少成功');
    } else {
        insertLog('库存减少失败');
    }
  • 相关阅读:
    TestNG并发测试包
    @Valid的坑
    spring boot 下 spring security 自定义登录配置与form-login属性详解
    在eclipse上搭建springBoot
    分页问题
    谷歌chrome://chrome-urls/
    chrome中清除dns缓存
    pg中的非varchar类型的模糊搜索
    spring中用xml配置构造注入的心得
    Flask-Limiter使用详细说明
  • 原文地址:https://www.cnblogs.com/blts/p/11177184.html
Copyright © 2011-2022 走看看