如何压力测试一个唯一主键函数是否真的不会生成重复主键得方法

7 篇文章 0 订阅
4 篇文章 1 订阅

请首先下载个thinkphp5的框架运行以下代码

保存重复主键的文件:

think\apps\bank-data\data.csv


think\apps\index\controller\Index.php

<?php

namespace app\index\controller;
use PDO;
use think\Db;

class Index {
    public function index(){
        $msg_id = session_create_id();
        $db1 = Db::connect('db1');
        $db1->startTrans();
        try {
          $db1->execute(
              'INSERT  INTO think_message_supply(msg_id) VALUES (?)',
              [$msg_id]
          );
          $db1->commit();
        } catch (\Exception $e){
          $db1->rollback();
          file_put_contents(APP_PATH.'bank-data/data.csv', $msg_id.'  ##  '.date('Y-m-d H:i:s',time()).PHP_EOL, FILE_APPEND);
          return json(['success'=>0,'msg'=>"Failed"]);
                    
        }
        return json(['success'=>1,'msg'=>"Successful"]);
    }

}

[myth@contoso ~]$ ab -r -t 7200 -s 7200 -k -n 1000000 -c 1000 "http://contoso.org/index/index/index"

session_create_id() 换成函数uniqid() 会立刻出现很多重复的主键 

session_create_id()函数目前我在虚拟机里面无法测试它有重复的现象发生



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值