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

主頁 > 知識(shí)庫 > php+redis實(shí)現(xiàn)商城秒殺功能

php+redis實(shí)現(xiàn)商城秒殺功能

熱門標(biāo)簽:離石地圖標(biāo)注 南寧高頻外呼回?fù)芟到y(tǒng)哪家好 400電話辦理福州市 江蘇外呼電銷機(jī)器人報(bào)價(jià) 電話機(jī)器人危險(xiǎn)嗎 400電話申請(qǐng)方法收費(fèi) 深圳外呼系統(tǒng)收費(fèi) 專業(yè)電話機(jī)器人批發(fā)商 長沙crm外呼系統(tǒng)業(yè)務(wù)

好久沒來整理文章了,閑了沒事寫篇文章記錄下php+redis實(shí)現(xiàn)商城秒殺功能。

1、安裝redis,根據(jù)自己的php版本安裝對(duì)應(yīng)的redis擴(kuò)展(此步驟簡(jiǎn)單的描述一下)

1.1.安裝php_igbinary.dll,php_redis.dll擴(kuò)展此處需要注意你的php版本如圖:

1.2.php.ini文件新增extension=php_igbinary.dll;extension=php_redis.dll兩處擴(kuò)展

ok此處已經(jīng)完成第一步redis環(huán)境搭建完成看看phpinfo

2、項(xiàng)目中實(shí)際使用redis

2.1.第一步配置redis參數(shù)如下,redis安裝的默認(rèn)端口為6379: 

?php
/* 數(shù)據(jù)庫配置 */
return array(
 'DATA_CACHE_PREFIX' => 'Redis_',//緩存前綴
 'DATA_CACHE_TYPE'=>'Redis',//默認(rèn)動(dòng)態(tài)緩存為Redis
 'DATA_CACHE_TIMEOUT' => false,
 'REDIS_RW_SEPARATE' => true, //Redis讀寫分離 true 開啟
 'REDIS_HOST'=>'127.0.0.1', //redis服務(wù)器ip,多臺(tái)用逗號(hào)隔開;讀寫分離開啟時(shí),第一臺(tái)負(fù)責(zé)寫,其它[隨機(jī)]負(fù)責(zé)讀;
 'REDIS_PORT'=>'6379',//端口號(hào)
 'REDIS_TIMEOUT'=>'300',//超時(shí)時(shí)間
 'REDIS_PERSISTENT'=>false,//是否長連接 false=短連接
 'REDIS_AUTH'=>'',//AUTH認(rèn)證密碼 
);
?>

2.2.實(shí)際函數(shù)中使用redis:

/**
  * redis連接
  * @access private
  * @return resource
  * @author bieanju
  */
 private function connectRedis(){
  $redis=new \Redis();
  $redis->connect(C("REDIS_HOST"),C("REDIS_PORT"));  
  return $redis;
 }

2.3. 秒殺的核心問題是在大并發(fā)的情況下不會(huì)超出庫存的購買,這個(gè)就是處理的關(guān)鍵所以思路是第一步在秒殺類的先做一些基礎(chǔ)的數(shù)據(jù)生成:

//現(xiàn)在初始化里面定義后邊要使用的redis參數(shù)
public function _initialize(){
  parent::_initialize();
  $goods_id = I("goods_id",'0','intval');  
  if($goods_id){
   $this->goods_id = $goods_id;
   $this->user_queue_key = "goods_".$goods_id."_user";//當(dāng)前商品隊(duì)列的用戶情況
   $this->goods_number_key = "goods".$goods_id;//當(dāng)前商品的庫存隊(duì)列
  }
  $this->user_id = $this->user_id ? $this->user_id : $_SESSION['uid'];  
 }

2.4. 第二步就是關(guān)鍵所在,用戶在進(jìn)入商品詳情頁前先將當(dāng)前商品的庫存進(jìn)行隊(duì)列存入redis如下:

/**
 * 訪問產(chǎn)品前先將當(dāng)前產(chǎn)品庫存隊(duì)列
 * @access public
 * @author bieanju
 */
 public function _before_detail(){
  $where['goods_id'] = $this->goods_id;
  $where['start_time'] = array("lt",time());
  $where['end_time'] = array("gt",time());
  $goods = M("goods")->where($where)->field('goods_num,start_time,end_time')->find();
  !$goods  $this->error("當(dāng)前秒殺已結(jié)束!");
  if($goods['goods_num'] > $goods['order_num']){
   $redis = $this->connectRedis();
   $getUserRedis = $redis->hGetAll("{$this->user_queue_key}");
   $gnRedis = $redis->llen("{$this->goods_number_key}");
   /* 如果沒有會(huì)員進(jìn)來隊(duì)列庫存 */
   if(!count($getUserRedis)  !$gnRedis){   
    for ($i = 0; $i  $goods['goods_num']; $i ++) {
     $redis->lpush("{$this->goods_number_key}", 1);
    }
   }
   $resetRedis = $redis->llen("{$this->goods_number_key}");
   if(!$resetRedis){
    $this->error("系統(tǒng)繁忙,請(qǐng)稍后搶購!");
   }
  }else{
   $this->error("當(dāng)前產(chǎn)品已經(jīng)秒殺完!");
  }
   
 }

接下來要做的就是用ajax來異步的處理用戶點(diǎn)擊購買按鈕進(jìn)行符合條件的數(shù)據(jù)進(jìn)入購買的排隊(duì)隊(duì)列(如果當(dāng)前用戶沒在當(dāng)前產(chǎn)品用戶的隊(duì)列就進(jìn)入排隊(duì)并且pop一個(gè)庫存隊(duì)列,如果在就拋出,):

/**
  * 搶購商品前處理當(dāng)前會(huì)員是否進(jìn)入隊(duì)列
  * @access public
  * @author bieanju
  */
 public function goods_number_queue(){
  !$this->user_id  $this->ajaxReturn(array("status" => "-1","msg" => "請(qǐng)先登錄"));
  $model = M("flash_sale");
  $where['goods_id'] = $this->goods_id;
  $goods_info = $model->where($where)->find();
  !$goods_info  $this->error("對(duì)不起當(dāng)前商品不存在或已下架!"); 
  /* redis 隊(duì)列 */ 
  $redis = $this->connectRedis();
  /* 進(jìn)入隊(duì)列 */
  $goods_number_key = $redis->llen("{$this->goods_number_key}");
  if (!$redis->hGet("{$this->user_queue_key}", $this->user_id)) {
   $goods_number_key = $redis->lpop("{$this->goods_number_key}");
  }
   
  if($goods_number_key){
   // 判斷用戶是否已在隊(duì)列
   if (!$redis->hGet("{$this->user_queue_key}", $this->user_id)) {
    // 插入搶購用戶信息
    $userinfo = array(
     "user_id" => $this->user_id,
     "create_time" => time()
    );    
    $redis->hSet("{$this->user_queue_key}", $this->user_id, serialize($userinfo));
    $this->ajaxReturn(array("status" => "1"));
   }else{
    $modelCart = M("cart");
    $condition['user_id'] = $this->user_id;
    $condition['goods_id'] = $this->goods_id;
    $condition['prom_type'] = 1;
  $cartlist = $modelCart->where($condition)->count();
    if($cartlist > 0){
     $this->ajaxReturn(array("status" => "2"));
    }else{
     
     $this->ajaxReturn(array("status" => "1"));
     
    }
     
   }
    
  }else{
   $this->ajaxReturn(array("status" => "-1","msg" => "系統(tǒng)繁忙,請(qǐng)重試!"));
  }
 }

附加一個(gè)調(diào)試的函數(shù),刪除指定隊(duì)列值:

public function clearRedis(){
   set_time_limit(0);
   $redis = $this->connectRedis();
   //$Rd = $redis->del("{$this->user_queue_key}");
   $Rd = $redis->hDel("goods49",'用戶id'');
   $a = $redis->hGet("goods_49_user", '用戶id');
   if(!$a){
    dump($a);
   }
   
   if($Rd == 0){
    exit("Redis隊(duì)列已釋放!");   
   }
}

走到此處的時(shí)候秒殺的核心基本就完了,細(xì)節(jié)還需要自己在去完善,像購物車這邊的處理還有訂單的處理,好吧開始跑程序利用apache自身的ab可以進(jìn)行簡(jiǎn)單的模擬并發(fā)測(cè)試如下:

跑起來,我擦跑步起來redis沒有任何反應(yīng),此時(shí)還少一步重要的步驟就是開啟redis服務(wù),請(qǐng)根據(jù)自己的系統(tǒng)下一個(gè)redisbin_x32或者redisbin_x64的redis服務(wù)管理工具,點(diǎn)擊redis-server.exe,ok至此全部完成如下圖:

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • php結(jié)合redis實(shí)現(xiàn)高并發(fā)下的搶購、秒殺功能的實(shí)例
  • Redis瞬時(shí)高并發(fā)秒殺方案總結(jié)
  • redis使用watch秒殺搶購實(shí)現(xiàn)思路
  • 基于redis分布式鎖實(shí)現(xiàn)秒殺功能
  • php和redis實(shí)現(xiàn)秒殺活動(dòng)的流程
  • Redis使用watch完成秒殺搶購功能的代碼
  • Java使用Redis實(shí)現(xiàn)秒殺功能
  • 使用Redis實(shí)現(xiàn)秒殺功能的簡(jiǎn)單方法

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php+redis實(shí)現(xiàn)商城秒殺功能》,本文關(guān)鍵詞  php+redis,實(shí)現(xiàn),商城,秒殺,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php+redis實(shí)現(xiàn)商城秒殺功能》相關(guān)的同類信息!
  • 本頁收集關(guān)于php+redis實(shí)現(xiàn)商城秒殺功能的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲欧美成人一区二区三区| 欧美性猛交一区二区三区精品| 欧美日韩高清一区二区不卡| 美腿丝袜在线亚洲一区| 久久久久久久久久久久久久久99 | 亚洲精品日韩一| 欧美一二三四区在线| 99久久精品国产观看| 日韩在线a电影| 一区二区视频免费在线观看| 国产亚洲美州欧州综合国| 欧美三区在线观看| 91亚洲永久精品| 成人福利视频在线| 高清在线不卡av| 激情综合网天天干| 蜜桃视频一区二区三区在线观看| 亚洲已满18点击进入久久| 自拍偷自拍亚洲精品播放| 中文字幕五月欧美| 中文字幕五月欧美| 亚洲男人的天堂一区二区| 成人欧美一区二区三区小说| 亚洲欧美综合另类在线卡通| 中文字幕不卡三区| 亚洲国产精品成人综合色在线婷婷| 久久天堂av综合合色蜜桃网| 久久久精品影视| 中日韩免费视频中文字幕| 中文子幕无线码一区tr| 中文字幕av一区二区三区免费看| 亚洲国产综合在线| 在线成人免费观看| 欧美精品一二三四| 欧美剧在线免费观看网站 | 日韩一卡二卡三卡四卡| 欧美巨大另类极品videosbest| 在线观看一区不卡| 在线观看网站黄不卡| 精品视频999| 欧美精品一卡二卡| 日韩欧美国产午夜精品| 久久久久青草大香线综合精品| 国产精品久久久久一区| 一区二区高清免费观看影视大全| 日韩中文字幕亚洲一区二区va在线 | 国产精品久久久久久久久免费相片 | 2023国产精品| 一区免费观看视频| 日韩影院在线观看| 国产69精品久久久久毛片| 色成年激情久久综合| 日韩精品一区在线观看| 国产精品嫩草99a| 日本成人超碰在线观看| 国产精品一二三区在线| 欧美综合亚洲图片综合区| 日韩一级完整毛片| 亚洲色大成网站www久久九九| 偷窥国产亚洲免费视频 | 717成人午夜免费福利电影| 精品国精品自拍自在线| 国产99久久久国产精品| 免费成人在线影院| 亚洲国产毛片aaaaa无费看| 亚洲与欧洲av电影| 亚洲福利视频三区| 免费看黄色91| 国产精品伊人色| 国产精品18久久久久| 成人理论电影网| 99久久精品国产一区| 欧美午夜免费电影| 精品久久一二三区| ...xxx性欧美| 亚洲国产欧美日韩另类综合| 免费观看成人鲁鲁鲁鲁鲁视频| 乱中年女人伦av一区二区| 国产一区 二区 三区一级| 成人视屏免费看| 欧美一区二视频| wwww国产精品欧美| 亚洲欧美日韩系列| 麻豆视频一区二区| 亚洲第一成年网| 国内外成人在线| 国产成人小视频| 欧美妇女性影城| 国产精品入口麻豆九色| 婷婷丁香激情综合| 99精品黄色片免费大全| 91精品婷婷国产综合久久性色| 国产日韩成人精品| 五月天久久比比资源色| 国产.欧美.日韩| 欧美一级视频精品观看| 亚洲女人小视频在线观看| 丝袜亚洲另类欧美| 成人激情动漫在线观看| 在线电影欧美成精品| 国产精品国产精品国产专区不蜜| 天堂av在线一区| 成人午夜私人影院| 日韩欧美美女一区二区三区| 亚洲男人天堂一区| 精品视频一区三区九区| 2021中文字幕一区亚洲| 三级亚洲高清视频| 91美女福利视频| 精品国产一区二区三区忘忧草| 一级做a爱片久久| 国产成人av一区二区三区在线| 制服.丝袜.亚洲.另类.中文| 亚洲免费高清视频在线| 不卡影院免费观看| 国产三区在线成人av| 亚洲亚洲人成综合网络| 欧美日韩黄色影视| 亚洲男女毛片无遮挡| caoporm超碰国产精品| 精品国产青草久久久久福利| 丝袜美腿亚洲一区二区图片| 欧美三级日韩在线| 亚洲国产一区二区视频| 日本精品一区二区三区四区的功能| 337p亚洲精品色噜噜噜| 亚洲精品你懂的| 91香蕉视频在线| 亚洲欧美视频在线观看| 色综合久久久久| 亚洲图片有声小说| 欧美精品电影在线播放| 日本不卡高清视频| 日韩一区二区三区免费观看| 亚洲精品videosex极品| 欧美第一区第二区| 国产一区二区三区免费| 日本一区二区三区四区| 美脚の诱脚舐め脚责91| 91国偷自产一区二区三区观看| 一区二区免费看| 911精品产国品一二三产区| 美女视频一区二区| 久久久国际精品| 国产成人免费av在线| 国产精品午夜久久| 精品一区二区三区在线视频| 欧美性大战久久久| 奇米四色…亚洲| 国产视频一区在线观看| 国产麻豆欧美日韩一区| 五月婷婷综合激情| 日韩免费观看2025年上映的电影| 黑人精品欧美一区二区蜜桃| 国产欧美一区二区三区沐欲| 色综合亚洲欧洲| 免播放器亚洲一区| 国产精品久久久久毛片软件| 99re这里都是精品| 国产福利一区在线| 一级女性全黄久久生活片免费| 欧美三级中文字幕| 国产一区二区福利| 亚洲综合一区二区| 欧美变态tickle挠乳网站| 成人永久aaa| 成人免费在线视频观看| 中文字幕 久热精品 视频在线| 欧美日精品一区视频| 国产精品18久久久久久久久久久久 | 色先锋久久av资源部| 五月天丁香久久| 国产亚洲一区二区三区四区 | 久久九九久精品国产免费直播| 91玉足脚交白嫩脚丫在线播放| 日本成人在线不卡视频| 中文字幕一区二区三区不卡在线 | 国产精一区二区三区| 亚洲一区二区五区| 欧美二区三区91| 欧美日韩国产成人在线91| 风间由美一区二区av101| 日韩成人精品在线观看| 亚洲同性gay激情无套| 26uuu另类欧美亚洲曰本| 欧美日韩情趣电影| 色综合久久精品| 国产精品456| 韩国av一区二区三区四区| 日韩av网站在线观看| 亚洲另类在线一区| 日韩一区日韩二区| 国产香蕉久久精品综合网| 一本久久综合亚洲鲁鲁五月天| 91在线码无精品| 成人性生交大片免费看视频在线| 国产又粗又猛又爽又黄91精品| 五月激情综合婷婷| 亚洲成人黄色小说| 亚洲午夜免费电影|