大連做網(wǎng)站公司網(wǎng)站發(fā)布與推廣
一、中獎(jiǎng)率,先在后臺(tái)設(shè)定好獎(jiǎng)項(xiàng)名稱,抽獎(jiǎng)份數(shù),以及中獎(jiǎng)百分比
獎(jiǎng)品表draw
二、 借助文件排他鎖,在處理下單請(qǐng)求的時(shí)候,用flock鎖定一個(gè)文件,如果鎖定失敗說(shuō)明有其他訂單正在處理,此時(shí)要么等待要么直接提示用戶"服務(wù)器繁忙"
阻塞(等待)模式,一般都是用這個(gè)模式,排隊(duì)式抽獎(jiǎng),一個(gè)人抽完再到下一位
<?php
$fp = fopen("lock.txt", "w+"); if(flock($fp,LOCK_EX)) {//..處理訂單flock($fp,LOCK_UN); } fclose($fp); ?>
非阻塞模式
<?php
$fp = fopen("lock.txt", "w+"); if(flock($fp,LOCK_EX | LOCK_NB)) {//..處理訂單flock($fp,LOCK_UN); } else {echo "系統(tǒng)繁忙,請(qǐng)稍后再試"; }fclose($fp); ?>
完整php代碼 ,文件鎖進(jìn)行防高并發(fā)(在目錄下添加一個(gè)lock.txt),通過(guò)百分比計(jì)算出抽獎(jiǎng)率,隨機(jī)抽取一份獎(jiǎng)品
public function draw(){//文件鎖進(jìn)行防高并發(fā)$fp = fopen("lock.txt", "w+");if(flock($fp,L