1. 程式人生 > >php解決高併發問題

php解決高併發問題

<?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;
    }
}
?>