如何压力测试一个唯一主键函数是否真的不会生成重复主键得方法
2017-08-31 15:37
585 查看
请首先下载个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()函数目前我在虚拟机里面无法测试它有重复的现象发生
保存重复主键的文件:
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()函数目前我在虚拟机里面无法测试它有重复的现象发生
相关文章推荐
- eclipse 中main()函数中的String[] args如何使用?通过String[] args验证账号密码的登录类?静态的主方法怎样才能调用非static的方法——通过生成对象?在类中制作一个方法——能够修改对象的属性值?
- js 如何生成一个不重复的ID的函数
- JS如何生成一个不重复的ID的函数
- 如何生成不重复的订单号?这里提供一个不重复订单号生成方法
- 如何用最简单最快的方法判断一个BMP图片是否为黑白图片?我现在是全图片scanline 然后再加以分析,太慢了,有没有直接的函数可以做到呢?
- 今天想做一个不重复的编码,就写了这个用一个函数搞定随机码的生成。
- 判断ShellExecute函数是否执行完一个程序的方法
- 如何实现重复调用一个函数,非循环
- javascript如何判断数组内元素是否重复的方法集锦
- .net C# 如何判断一个对象是否具有某个方法
- 如何判断一个类中是否有虚函数
- 如何判断一个类是否支持某属性和方法以及如何判断IOS的版本
- sql 2005 中如何自动生成不重复的,长度相同字符串作为一个数据表的id
- Hibernate主键生成策略与save()方法是否发sql语句的研究
- 如何判断程序是否重复运行的几种方法
- JS判断一个数组中是否有重复值的三种方法
- 判断ShellExecute函数是否执行完一个程序的方法
- 有多个字段组成的联合主键,如何判断数据是否重复?
- java中如何实现重复执行一个方法(事)
- Hibernate主键生成策略与save()方法是否发sql语句的研究