1 回答

TA貢獻1719條經驗 獲得超6個贊
一個獎品分兩個隊列,如1_jx_1(第一期獎品獎項1)、2_jx_1(第二期獎品獎項1),然后隊列里面放獎品的信息什么的。
$1_jx_1=
array(
array('jx'=>'1','name'=>'一等獎','sn'=>'20170401401'),
array('jx'=>'1','name'=>'一等獎','sn'=>'20170401402'),
array('jx'=>'1','name'=>'一等獎','sn'=>'20170401403'),
......
);
$1_jx_2=
array(
array('jx'=>'1','name'=>'一等獎','sn'=>'20170401411'),
array('jx'=>'1','name'=>'一等獎','sn'=>'20170401412'),
array('jx'=>'1','name'=>'一等獎','sn'=>'20170401413'),
......
);
用戶點擊頁面,生成獎品,第一周去隊列一取,后面兩周去隊列二取獎品,隊列出隊空,就直接返回謝謝參與。
用戶點擊頁面,算法生成獎項再隊列里面出隊,這是一個辦法。
以前我是這么搞的,不知道好不好。我線下根據算生法,生成了好幾萬的領獎數據,把這些記錄放到redis里面,用戶點擊頁面,直接隊列里面出隊一個獎給他,省了算法的部分。
也就是說只要兩個隊列,只要隊列一空,就謝謝參與。這樣子速度是快了些,缺點是前確定了獎品概率,后期不好改動。
$1jx= array(
array('jx'=>'1','name'=>'一等獎','sn'=>'20170401401'),
array('jx'=>'0','name'=>'謝謝參與','sn'=>''),
array('jx'=>'0','name'=>'謝謝參與','sn'=>''),
array('jx'=>'0','name'=>'謝謝參與','sn'=>''),
array('jx'=>'1','name'=>'一等獎','sn'=>'20170401403'),
......
);
$1jx=array(
array('jx'=>'0','name'=>'謝謝參與','sn'=>''),
array('jx'=>'0','name'=>'謝謝參與','sn'=>''),
......
array('jx'=>'1','name'=>'一等獎','sn'=>'20170401413'),
......
);
添加回答
舉報