php解決高併發問題
阿新 • • 發佈:2019-01-06
<?php $redis = new redis(); $result = $redis->connect('127.0.0.1', 6379); echo $mywatchkey = $redis->get("mywatchkey"); /* //插入搶購資料 if($mywatchkey>0) { $redis->watch("mywatchkey"); //啟動一個新的事務。 $redis->multi(); $redis->set("mywatchkey",$mywatchkey-1); $result = $redis->exec(); if($result) { $redis->hSet("watchkeylist","user_".mt_rand(1,99999),time()); $watchkeylist = $redis->hGetAll("watchkeylist"); echo "搶購成功!<br/>"; $re = $mywatchkey - 1; echo "剩餘數量:".$re."<br/>"; echo "使用者列表:<pre>"; print_r($watchkeylist); }else{ echo "手氣不好,再搶購!";exit; } }else{ // $redis->hSet("watchkeylist","user_".mt_rand(1,99999),"12"); // $watchkeylist = $redis->hGetAll("watchkeylist"); echo "fail!<br/>"; echo ".no result<br/>"; echo "使用者列表:<pre>"; // var_dump($watchkeylist); }*/ $rob_total =400; //搶購數量 if($mywatchkey<=$rob_total){ $redis->watch("mywatchkey"); $redis->multi(); //在當前連線上啟動一個新的事務。 //插入搶購資料 $redis->set("mywatchkey",$mywatchkey+1); $rob_result = $redis->exec(); if($rob_result){ $redis->hSet("watchkeylist","user_".mt_rand(1, 9999),$mywatchkey); $mywatchlist = $redis->hGetAll("watchkeylist"); echo "搶購成功!<br/>"; echo "剩餘數量:".($rob_total-$mywatchkey-1)."<br/>"; echo "使用者列表:<pre>"; var_dump($mywatchlist); }else{ $redis->hSet("watchkeylist","user_".mt_rand(1, 9999),'meiqiangdao'); echo "手氣不好,再搶購!";exit; } } ?>