国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

處理高并發(fā) IO瓶頸解決紅包程序

陳江龍 / 1377人閱讀

摘要:解決高并發(fā)瓶頸解決紅包程序本程序模擬的紅包抽獎模式。總金額元,隨機用戶獲得元的紅包,直到紅包分發(fā)完。

解決高并發(fā) io瓶頸解決紅包程序

本程序模擬的紅包抽獎模式。總金額100元,隨機用戶獲得1-10元的紅包,直到紅包分發(fā)完。
redis中l(wèi)uckMoneyMax需要提前設置

$r->set("luckMoneyMax" , 100);

正文

    /**
     * 隨機獲取紅包
     * 總金額100元
     * 每次紅包大小[1,10]
     */
    public function luckMoney()
    {
        $r = new Redis();
        $r->pconnect("127.0.0.1","6379");
        $r->select(1);

        $lock_key = "lockkey";
        while(true){

            $lock_timout = time()+3+1;
            //4秒超時 一個鎖超過4s還沒釋放 說明得到鎖的線程掛了 其他線程需要競爭釋放鎖 再得到鎖
            $get_lock = $r->setnx($lock_key,$lock_timout);


            //得到鎖的條件 setnx返回值為真 超時并且getSet保證了不會多個進程去釋放鎖
            $now = time();

            if($get_lock || ( ($now > $r->get($lock_key)) && ($now > $r->getSet($lock_key , $lock_timout)) ) ){
                echo "去抽獎!
"; break;//去抽獎 } } $luckMoneyMax = $r->get("luckMoneyMax"); if($luckMoneyMax <= 0){ echo "獎金池空了!"; if((time() < $lock_timout) && $r->del($lock_key)){ echo "
毫秒時間:".$this->msectime()."釋放鎖成功"; } return; }elseif($luckMoneyMax <= 1){ $redBag = $luckMoneyMax; $r->set("luckMoneyMax" , 0); $data_arr = [ "redBag"=>$redBag, "mstime"=>$this->msectime() ]; $r->lpush("redBag-list", serialize($data_arr)); echo "恭喜中獎".$redBag; if((time() < $lock_timout) && $r->del($lock_key)){ echo "
毫秒時間:".$this->msectime()."釋放鎖成功"; } return; } //1-10 十元整數(shù) $redBag = rand(1,10); $tmp_money = $luckMoneyMax-$redBag; if($tmp_money < 0){ $redBag = $luckMoneyMax; $tmp_money=0; } $r->set("luckMoneyMax" , $tmp_money); $data_arr = [ "redBag"=>$redBag, "mstime"=>$this->msectime() ]; $r->lpush("redBag-list", serialize($data_arr)); echo "恭喜中獎".$redBag."元"; if((time() < $lock_timout) && $r->del($lock_key)){ echo "
毫秒時間:".$this->msectime()."釋放鎖成功"; } } /** * 毫秒級 * @return float */ public function msectime() { list($msec, $sec) = explode(" ", microtime()); $msectime = (float)sprintf("%.0f", (floatval($msec) + floatval($sec)) * 1000); return $msectime; }
swoole多線程測試
start();
    echo PHP_EOL;//PHP_EOL換行的意思
    echo $red_process->read();
    echo PHP_EOL;
}

echo "end:".date("Y-m-d H:i:s").PHP_EOL;

function getMoney(swoole_process $worker)
{
    $content = getHTTPS("http://example.com/index/index/luckMoney.html");
    $worker->write($content);
}
function getHTTPS($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_REFERER, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}
日志記錄結果

2s 100 次就抽取完畢

毫秒 紅包金額
毫秒時間1514386342125 紅包10元
毫秒時間1514386342106 紅包10元
毫秒時間1514386342086 紅包10元
毫秒時間1514386342066 紅包7元
毫秒時間1514386342046 紅包6元
毫秒時間1514386342026 紅包5元
毫秒時間1514386342007 紅包3元
毫秒時間1514386341988 紅包1元
毫秒時間1514386341968 紅包7元
毫秒時間1514386341950 紅包5元
毫秒時間1514386341931 紅包8元
毫秒時間1514386341913 紅包7元
毫秒時間1514386341894 紅包1元
毫秒時間1514386341875 紅包1元
毫秒時間1514386341856 紅包9元
毫秒時間1514386341836 紅包10元
合計 100元

推薦:
100萬個openid快速存入redis

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26276.html

相關文章

  • 并發(fā) - 收藏集 - 掘金

    摘要:在中一般來說通過來創(chuàng)建所需要的線程池,如高并發(fā)原理初探后端掘金閱前熱身為了更加形象的說明同步異步阻塞非阻塞,我們以小明去買奶茶為例。 AbstractQueuedSynchronizer 超詳細原理解析 - 后端 - 掘金今天我們來研究學習一下AbstractQueuedSynchronizer類的相關原理,java.util.concurrent包中很多類都依賴于這個類所提供的隊列式...

    levius 評論0 收藏0
  • 并發(fā) - 收藏集 - 掘金

    摘要:在中一般來說通過來創(chuàng)建所需要的線程池,如高并發(fā)原理初探后端掘金閱前熱身為了更加形象的說明同步異步阻塞非阻塞,我們以小明去買奶茶為例。 AbstractQueuedSynchronizer 超詳細原理解析 - 后端 - 掘金今天我們來研究學習一下AbstractQueuedSynchronizer類的相關原理,java.util.concurrent包中很多類都依賴于這個類所提供的隊列式...

    fantix 評論0 收藏0
  • 并發(fā)

    摘要:表示的是兩個,當其中任意一個計算完并發(fā)編程之是線程安全并且高效的,在并發(fā)編程中經常可見它的使用,在開始分析它的高并發(fā)實現(xiàn)機制前,先講講廢話,看看它是如何被引入的。電商秒殺和搶購,是兩個比較典型的互聯(lián)網高并發(fā)場景。 干貨:深度剖析分布式搜索引擎設計 分布式,高可用,和機器學習一樣,最近幾年被提及得最多的名詞,聽名字多牛逼,來,我們一步一步來擊破前兩個名詞,今天我們首先來說說分布式。 探究...

    supernavy 評論0 收藏0
  • 并發(fā)

    摘要:表示的是兩個,當其中任意一個計算完并發(fā)編程之是線程安全并且高效的,在并發(fā)編程中經常可見它的使用,在開始分析它的高并發(fā)實現(xiàn)機制前,先講講廢話,看看它是如何被引入的。電商秒殺和搶購,是兩個比較典型的互聯(lián)網高并發(fā)場景。 干貨:深度剖析分布式搜索引擎設計 分布式,高可用,和機器學習一樣,最近幾年被提及得最多的名詞,聽名字多牛逼,來,我們一步一步來擊破前兩個名詞,今天我們首先來說說分布式。 探究...

    ddongjian0000 評論0 收藏0
  • 并發(fā)

    摘要:表示的是兩個,當其中任意一個計算完并發(fā)編程之是線程安全并且高效的,在并發(fā)編程中經常可見它的使用,在開始分析它的高并發(fā)實現(xiàn)機制前,先講講廢話,看看它是如何被引入的。電商秒殺和搶購,是兩個比較典型的互聯(lián)網高并發(fā)場景。 干貨:深度剖析分布式搜索引擎設計 分布式,高可用,和機器學習一樣,最近幾年被提及得最多的名詞,聽名字多牛逼,來,我們一步一步來擊破前兩個名詞,今天我們首先來說說分布式。 探究...

    wangdai 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<