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