国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

關(guān)于多個進(jìn)程無法產(chǎn)生隨機(jī)數(shù)問題

h8h8
     function getNonceStr($length = 32) 
    {
        $chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
        $str ="";
        for ( $i = 0; $i < $length; $i++ )  {  
            $str .= substr($chars, mt_rand(0, strlen($chars)-1), 1);  
        } 
        return $str;
    }

$consumer->onWorkerStart = function($consumer)
{
    \Workerman\Lib\Timer::add(0.5, function() use ($consumer){
        while(1)
        {           
            echo getNonceStr();         
        }               
    });
};

有一推送項目要產(chǎn)生隨機(jī)數(shù),發(fā)現(xiàn)在多個進(jìn)程的情況下,每一次產(chǎn)生隨機(jī)數(shù)都是一樣的,,只有$consumer->count = 1才不一樣

4730 4 1
4個回答

walkor 打賞

我這測試正常。可能和系統(tǒng)或者環(huán)境有關(guān),還要看mt_rand的底層實現(xiàn)。
不過這個都和workerman無關(guān),不是workerman的問題。

  • 大飯米粒 2019-01-07

    在Linux系統(tǒng)中開啟多進(jìn)程會出現(xiàn)無法隨機(jī)數(shù),我也剛遇到了這個問題,在找解決方法,Windows中無此問題(應(yīng)該是Windows無法多進(jìn)程)

xiewen_kevin

老鐵,問題找到了嗎?我這也是這種情況,哈哈

  • 暫無評論
walkor 打賞

可能是在主進(jìn)程調(diào)用了mt_rand導(dǎo)致的,
子進(jìn)程在onWorkerStart里調(diào)用下mt_srand隨機(jī)播種試下

  • 暫無評論
大飯米粒

找到了解決辦法,如果是用rand()取隨機(jī)數(shù),在rand前先執(zhí)行srand(),如果用mt_rand()取隨機(jī)數(shù),就先執(zhí)行mt_srand(),這樣可以保證在Linux下多進(jìn)程取出的隨機(jī)數(shù)不一直重復(fù)。
?
注:srand()或mt_srand()不要用參數(shù),原因不解釋

  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??