婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > php處理搶購類功能的高并發(fā)請求

php處理搶購類功能的高并發(fā)請求

熱門標簽:南寧高頻外呼回撥系統(tǒng)哪家好 400電話辦理福州市 長沙crm外呼系統(tǒng)業(yè)務 深圳外呼系統(tǒng)收費 江蘇外呼電銷機器人報價 400電話申請方法收費 離石地圖標注 專業(yè)電話機器人批發(fā)商 電話機器人危險嗎

本文以搶購、秒殺為例。介紹如何在高并發(fā)狀況下確保數據正確。
在高并發(fā)請求下容易參數兩個問題
1.數據出錯,導致產品超賣。
2.頻繁操作數據庫,導致性能下降。

測試環(huán)境

Windows7
apache2.4.9
php5.5.12
php框架 yii2.0
工具 apache bench (apache自帶高并發(fā)請求工具)。

通常處理方法

從控制器可以看出代碼思路。先查詢商品庫存。如果庫存大于0 ,則庫存減少1,同時生產訂單,錄入搶購者數據。

// 常規(guī)代碼處理高并發(fā)
  public function actionNormal(){
    // 查詢庫存
    $stock = Goods::find()->select('stock')->where(['goods_id'=>100001])->asArray()->one();
    // 判斷該商品是否還有庫存
    if ($stock['stock']>0) {
      // 庫存減一
      Goods::updateAllCounters(['stock' => -1],['goods_id'=>100001]);

      // 生產訂單(另外功能,暫且隨機賦值)
      $order = $this->build_order();

      // 秒殺信息入庫
      $model = new Highly();
      $model->order_id = $order;
      $model->goods_name = '秒殺商品';
      $model->buy_time = date('Y-m-d H:i:s',time());
      $model->mircrotime = microtime(true);
      if($model->save()===false){
        echo '未能成功搶購!';
      }else{
        echo '恭喜你,訂單b>'.$order.'/b>搶購成功';
      }

    }else{
      echo '已被搶購一空!';
    }
  }

將商品庫存設置為20后,通過ab 配置200的并發(fā)請求。

ab -n 200 -c 200 http//localhost/highly/normal

執(zhí)行結果發(fā)現庫存變成了負值,商品超賣了。

原因比較簡單,在高并發(fā)請求下。在生產訂單,減少庫存之前,會優(yōu)先查詢到庫存結果。

優(yōu)化一:修改庫存數據類型

第一種優(yōu)化方法,從數據庫入手。既然查詢到的結果不準確,那我就在庫存減少上做手腳。將庫存的數據類型改成無符號(不能有負值)。

代碼還是跟上面差不多,只是在庫存減1的地方做了個判斷。避免報錯。

public function actionNormal(){
    // 查詢庫存
    $stock = Goods::find()->select('stock')->where(['goods_id'=>100001])->asArray()->one();
    // 判斷該商品是否還有庫存
    if ($stock['stock']>0) {
      // 庫存減一
      if(Goods::updateAllCounters(['stock' => -1],['goods_id'=>100001])===false){
        echo "已被搶購一空!";
        return false;
      }

      // 生產訂單(另外功能,暫且隨機賦值)
      $order = $this->build_order();

      // 秒殺信息入庫
      $model = new Highly();
      $model->order_id = $order;
      $model->goods_name = '秒殺商品';
      $model->buy_time = date('Y-m-d H:i:s',time());
      $model->mircrotime = microtime(true);
      if($model->save()===false){
        echo '未能成功搶購!';
      }else{
        echo '恭喜你,訂單b>'.$order.'/b>搶購成功';
      }

    }else{
      echo '已被搶購一空!';
    }
  }

這一次同樣200的并發(fā),執(zhí)行結果發(fā)現。數據正確,并不會出現超賣的情況。
思路其實也比較簡單。因為庫存不能為負值,當庫存等于0時,如果還有值傳進來,則會報錯。請求被終止。

這種優(yōu)化方式,雖然避免了商品超賣的情況。但是在另一方面,請求仍然會對數據庫造成壓力。如果多個功能使用此數據庫,會造成性能下降厲害。

優(yōu)化二:redis

利用 redis list類型的pop的原子性。在操作數據庫前,做一個驗證。當商品賣完后,就不允許再繼續(xù)進行數據庫操作。

// redis list 高并發(fā)測試
  public function actionRedis(){
    $redis = \Yii::$app->redis;
    // $redis->lpush('mytest',1);
    $order = $this->build_order();
    // echo $order;die;
    // echo $redis->llen('mytest');
    $reg = $redis->lpop('mytest');
    if (!$reg) {
      echo "笨蛋!已經被搶光啦!";
      return false;
    }
    $redis->close();
    $model = new Highly();
    $model->order_id = $order;
    $model->goods_name = '秒殺商品';
    $model->buy_time = date('Y-m-d H:i:s',time());
    $model->mircrotime = microtime(true);

    if($model->save()===false){
      echo '未能成功搶購!';
    }else{
      echo '恭喜你,訂單b>'.$order.'/b>搶購成功';
    }
  }
  // 給redis添加商品
  public function actionInsertgoods(){
    $count = yii::$app->request->get('count',0);
    if (empty($count)) {
      echo '大兄弟,你還沒告訴我需要上架多少商品呢!';
      return false;
    }
    $redis = \Yii::$app->redis;
    for ($i=0; $i  $count; $i++) { 
      $redis->lpush('mytest',1);
    }
    echo '成功添加了'.$redis->llen('mytest').'件商品。';
    $redis->close();

  }

這點的代碼,我寫了兩個方法。第一個方法是秒殺的代碼,第二個方法是給秒殺的商品設置數量。為了方便測試,我這里處理的比較簡單。

通過測試,數據庫生產的訂單數量正常,并沒有出現問題。而又避免了請求數據庫造成性能下降的問題。同時內存數據庫redis查詢的速度要比mysql快很多。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • PHP并發(fā)場景的三種解決方案代碼實例
  • php并發(fā)加鎖問題分析與設計代碼實例講解
  • PHP解決高并發(fā)的優(yōu)化方案實例
  • php多進程模擬并發(fā)事務產生的問題小結
  • PHP利用Mysql鎖解決高并發(fā)的方法
  • php curl批處理實現可控并發(fā)異步操作示例
  • PHP+Redis 消息隊列 實現高并發(fā)下注冊人數統(tǒng)計的實例
  • PHP開發(fā)中解決并發(fā)問題的幾種實現方法分析
  • PHP使用Redis實現防止大并發(fā)下二次寫入的方法
  • php結合redis高并發(fā)下發(fā)帖、發(fā)微博的實現方法
  • 詳解php處理大并發(fā)大流量大存儲

標簽:南昌 濱州 興安盟 白酒營銷 南京 曲靖 太原 株洲

巨人網絡通訊聲明:本文標題《php處理搶購類功能的高并發(fā)請求》,本文關鍵詞  php,處理,搶購,類,功能,的,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《php處理搶購類功能的高并發(fā)請求》相關的同類信息!
  • 本頁收集關于php處理搶購類功能的高并發(fā)請求的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久久久久久久久久电影| 亚洲欧美另类小说视频| 久久精子c满五个校花| 欧美国产日产图区| 久久99久久99| 91麻豆精品久久久久蜜臀| 国产精品人成在线观看免费| 国产在线视视频有精品| 26uuu色噜噜精品一区| 国精产品一区一区三区mba视频 | 欧美日本在线视频| 成人免费在线视频| 日韩一区二区精品葵司在线| 色综合一区二区| 亚洲欧美偷拍另类a∨色屁股| 91小视频在线观看| 日韩一区中文字幕| 欧美日韩激情一区二区| 日韩av一区二区在线影视| 精品日韩99亚洲| jlzzjlzz亚洲女人18| 污片在线观看一区二区| 日韩一区二区三区高清免费看看| 免费xxxx性欧美18vr| 国产午夜精品美女毛片视频| 91麻豆免费看| 国产精品影视在线| 日韩中文字幕不卡| 中文字幕视频一区二区三区久| 欧美日韩一区不卡| 亚洲精品成人在线| 日韩一级免费一区| 在线亚洲高清视频| 粉嫩欧美一区二区三区高清影视 | 一区二区三区不卡视频在线观看| 欧美一区二区女人| 精品视频免费在线| 盗摄精品av一区二区三区| 美女视频免费一区| 香蕉久久一区二区不卡无毒影院 | 色综合av在线| 国内精品伊人久久久久av一坑 | 国产91精品一区二区麻豆亚洲| 亚洲欧美在线另类| 亚洲色图20p| 亚洲免费观看高清完整版在线观看熊| 国产婷婷色一区二区三区四区| 欧美精品一区二区三区蜜臀 | 国产在线观看一区二区| 免费成人美女在线观看.| 一区二区国产盗摄色噜噜| 国产精品成人一区二区三区夜夜夜 | 成人免费av资源| 一本大道久久a久久精二百| 91丝袜美女网| 色综合天天性综合| 在线一区二区三区四区五区 | 亚洲精品成人天堂一二三| 日本欧美大码aⅴ在线播放| 久久久www成人免费毛片麻豆| 国产精品久久久久影院| 国产精品沙发午睡系列990531| 国产精品美女一区二区三区| 亚洲va在线va天堂| 国产在线麻豆精品观看| 高清成人在线观看| 欧美视频第二页| 欧美一区二区三区视频| 国产日韩一级二级三级| 中文字幕一区二区三区蜜月| 国产欧美日韩精品a在线观看| 日韩欧美中文字幕公布| 一区二区三区免费| 成人天堂资源www在线| 精品视频在线免费| 国产精品久久毛片a| 久久99精品久久只有精品| 日本一区二区在线不卡| 午夜久久久影院| 麻豆免费看一区二区三区| 91美女在线观看| 亚洲香蕉伊在人在线观| 久久精品国产**网站演员| 91天堂素人约啪| 国产精品国产三级国产aⅴ无密码| 日韩经典一区二区| 51精品久久久久久久蜜臀| 亚洲精品中文字幕在线观看| 国产成人精品三级| 欧美精品一区二区不卡| 喷水一区二区三区| 69堂成人精品免费视频| 亚洲一区国产视频| 国产成人亚洲综合a∨婷婷| 久久精品一区四区| 国产成人在线免费| 国产精品久久福利| 成人夜色视频网站在线观看| 国产欧美精品一区| 国产成人欧美日韩在线电影| 日韩一二三四区| 国产精品自拍网站| 久久九九久久九九| 91传媒视频在线播放| 日本在线播放一区二区三区| 欧美一级理论片| 成人激情免费网站| 性做久久久久久| 国产亚洲精品超碰| 欧美三级中文字| 国产在线精品一区二区夜色| 国产精品天天看| 在线电影国产精品| 成人网男人的天堂| 三级久久三级久久久| 久久久精品影视| 精品视频在线免费看| 粉嫩av一区二区三区粉嫩 | av网站一区二区三区| 日韩电影在线一区| 中文字幕亚洲一区二区av在线| 色综合激情五月| 久久97超碰色| 一区二区三区产品免费精品久久75| 在线播放亚洲一区| 91在线视频播放地址| 久久国产生活片100| 亚洲一区二区三区三| 精品国产亚洲一区二区三区在线观看 | 国产精品91xxx| 日本免费在线视频不卡一不卡二| 国产精品免费aⅴ片在线观看| 日韩欧美亚洲国产精品字幕久久久| eeuss鲁一区二区三区| 不卡一区二区三区四区| 成人av资源网站| 色综合久久六月婷婷中文字幕| 福利一区二区在线| 成人午夜av电影| 色婷婷亚洲综合| 欧美人xxxx| 欧美顶级少妇做爰| 日韩午夜在线影院| 久久久影院官网| 亚洲精选一二三| 蜜桃视频一区二区三区在线观看| 免费欧美日韩国产三级电影| 美女免费视频一区二区| 韩国三级在线一区| 成人精品视频一区二区三区尤物| 成人精品国产一区二区4080| 91免费看片在线观看| 日韩视频免费观看高清完整版在线观看 | 免费看日韩精品| 亚洲女人****多毛耸耸8| 中文字幕亚洲综合久久菠萝蜜| 亚洲综合视频网| 蜜臀精品一区二区三区在线观看 | 国产在线精品一区二区| 波多野结衣亚洲一区| 欧美精品v国产精品v日韩精品| 精品成人在线观看| 亚洲男同性视频| 国内精品视频一区二区三区八戒| eeuss国产一区二区三区| 欧美一区二区三区在线视频 | 欧美国产日韩精品免费观看| 精品视频免费看| 中文字幕中文字幕一区| 激情小说亚洲一区| 色av成人天堂桃色av| 国产日韩精品一区| 狠狠色丁香久久婷婷综| 欧美一级欧美三级| 国产精品一色哟哟哟| 欧美日韩欧美一区二区| 亚洲一区二区高清| 欧洲精品一区二区| 亚洲综合激情网| 91香蕉视频黄| 一区二区在线观看免费视频播放| eeuss鲁片一区二区三区 | 日本一区二区三区视频视频| 在线不卡免费av| 久久99精品视频| 国产亚洲精品久| 国产精品996| 成人免费在线播放视频| voyeur盗摄精品| 天天射综合影视| 久久久久99精品国产片| 成人天堂资源www在线| 久久青草欧美一区二区三区| 国产福利一区二区三区视频| 亚洲人妖av一区二区| 欧美一区二区在线不卡| 国产精品一区二区不卡| 国产精品网站在线| 日韩三级中文字幕| 成人h动漫精品一区二|