21,886
社区成员
发帖
与我相关
我的任务
分享
session_start();
if (!isset($_SESSION['gu_id'] ))
{
$_SESSION['gu_id'] = mt_rand(5, 15);//只要是同一会话进来的不管是多少并发他的ID值都是一样,但现在他会有多少个并发他的ID就会有多少
$gu_id = $_SESSION['gu_id'];
}else{
$gu_id = $_SESSION['gu_id'];
}
INSERT INTO tb1 (` id`, `name`, )
VALUES
( $gu_id, 'name1' );//不管有多少个并发只插入一条数据
//以下还有其他业务代码
session_start();
if (!isset($_SESSION['gu_id'] )) {
$_SESSION['gu_id'] = mt_rand(5, 15);//只要是同一会话进来的不管是多少并发他的ID值都是一样,但现在他会有多少个并发他的ID就会有多少
INSERT INTO tb1 (` id`, `name` ) VALUES ( $_SESSION['gu_id'], 'name1' );//不管有多少个并发只插入一条数据
}
$gu_id = $_SESSION['gu_id'];
[/quote]
这个方法试了很多次,同一会话 同时请求5个时 同样也会插入5条数据,并发的速度比 session处理的快[/quote]
那是因为 第一次请求的时候没有建立会话,你同时请求5个的话,会建立5次。当然会重复。
你试一试先请求一次把会话建立起来,后面再请求多次看看
[/quote]
第一次请求时就并发了,如何能建立会话呢
session_start();
if (!isset($_SESSION['gu_id'] )) {
$_SESSION['gu_id'] = mt_rand(5, 15);//只要是同一会话进来的不管是多少并发他的ID值都是一样,但现在他会有多少个并发他的ID就会有多少
INSERT INTO tb1 (` id`, `name` ) VALUES ( $_SESSION['gu_id'], 'name1' );//不管有多少个并发只插入一条数据
}
$gu_id = $_SESSION['gu_id'];
这样不就行了?
所说的同一会话 就是相同的session_id吧