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

想做一個服務器對客服端數(shù)據(jù)的反饋,服務器不停的發(fā)1 ,直到客戶端發(fā)2時停止。下面的程序會進入死循環(huán),問問怎么弄

five_seven1987

public static function onMessage($client_id, $message)
{

   var_dump($message);// 向所有人發(fā)
   while($message==1) {
       $timesleep=2;
       sleep($timesleep);
       Gateway::sendToClient($client_id, $_SERVER['REMOTE_ADDR']);
       if($message==2){
           break;
           var_dump($message);
       }
   }

}

2139 1 0
1個回答

phpcreeper

禁止使用死循環(huán),更不要用sleep系統(tǒng)調用,改用定時器實現(xiàn)。

  • five_seven1987 2020-05-06

    請教一下,大體的思路時怎么樣的。就是服務器對客戶端不段的發(fā)送信息1,值到客戶端反饋2時停止

  • phpcreeper 2020-05-06

    @6964:
    根據(jù)你圖示的代碼邏輯大致是這樣的:
    $worker->onMessage = function($connection, $data){
    if(empty($connection->timer_id) && 1 == $data)
    {
    $connection->timer_id = Timer::add(2, function()use($connection){
    //發(fā)送數(shù)據(jù)到客戶端
    }, [], true);
    }

    if(isset($connection->timer_id) && 2 == $data) 
    {   
        Timer::del($connection->timer_id);
        unset($connection->timer_id);
    }   

    }

  • phpcreeper 2020-05-06

    另外如果是在gatewayworker框架里做,一樣的思路,把timer_id存給當前worker對象的一個靜態(tài)數(shù)組;

  • five_seven1987 2020-05-07

    謝謝了,

年代過于久遠,無法發(fā)表回答
??