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

http如何卡住輸出?

phperfan

我現(xiàn)在在做一個販賣機(jī)后臺的項(xiàng)目,坑爹的是販賣機(jī)的傳輸協(xié)議是http輪詢。
然后我做了以下處理

//...............

$redis = new redis();
$count = 0;
$loop = 2;
$res = [];
while($count < 60 && empty($res){    //輪詢業(yè)務(wù)處理
        if(empty($res)){
                $key = 'goodsUpdate_112233';
                if($id = $redis->lpop($key)){     //查詢redis隊(duì)列是否有需要出貨的訂單
                        $sale_model = new SaleModel();
                        $res = $sale_model->Shipment($id,$machine);      //查詢生成出貨通知
                }
        }

        /**
         * 其他業(yè)務(wù)處理
         * .................
         **/

        if(empty($res)){
                sleep($loop);
                $count += $loop;
        )
}

//..................

Http::header('Content-Type:application/json; charset=utf-8');
$connection->send(json_encode($res,JSON_UNESCAPED_UNICODE));

但是當(dāng)運(yùn)行的時候,查詢狀態(tài)出現(xiàn)如下的狀態(tài)

我想問問用了sleep()是不是進(jìn)程線程就是處于無法使用狀態(tài)?
有沒有其他的辦法處理這種需求?

2353 2 0
2個回答

walkor 打賞

sleep之后進(jìn)程就完全sleep不會做事情了,所以不能用sleep。
可以用定時器代替sleep

phperfan
public function onMessage($connection, $data)
{
    $redis = new Redis();
    $time_interval = 2;
    //設(shè)置輪詢定時器
    $timer_id = Timer::add($time_interval, function() use ($redis,$connection,&$timer_id){
        echo "------------ \n";
        echo "定時器執(zhí)行 {$connection->id} \n";
        $key = 'Sea_1';
        if($value = $redis->lpop($key)){
            $connection->send($value);
            Timer::del($timer_id);
            echo "刪除定時器 \n";
        }else{
            echo "未找到數(shù)據(jù)";
        }
    });
    //一次性定時器, 刪除輪詢定時器
    Timer::add(60,function ($timer_id,$connection){
        Timer::del($timer_id);
        $connection->send("沒有數(shù)據(jù)");
    },,false);

    return true;
    $connection->send('haha');

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