模拟并发
代码示例:
ini_set("display_errors", "off"); header("Content-type: text/html; charset=utf-8"); $url='http://127.0.0.1:801/index.php/Home/Index/index1?id='; $num=1000; $mh = curl_multi_init(); for ($i=0; $i<$num; $i++) { $j = $i+1; $conn[$i]=curl_init($url.$j); curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,1); curl_multi_add_handle ($mh,$conn[$i]); } do { $n=curl_multi_exec($mh,$active); } while ($active); for ($i=0; $i<=$num; $i++) { $res[$i]=curl_multi_getcontent($conn[$i]); curl_close($conn[$i]); } print_r($res); //访问方法 public function index1(){ $id = $_GET['id']; $order = M('order'); $statements = M('statements'); //$order->startTrans(); $orders = $order->where('id='.$id)->field('uid,money')->find(); $uid = $orders['uid']; $num = bcdiv($orders['money'],100); $arr = array(); if($num > 0){ for($i=0; $i<$num; $i++) { $arr[] = array('money'=>100,'uid'=>$uid,'oid'=>$id); } if(!empty($arr)){ $rec = $statements->addAll($arr); if($rec){ echo 1; //$order->commit(); }else{ echo 2; //$order->rollback(); } } } }