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