2014-03-12 54 views
0

我需要從UDP套接字獲取信息,但事實是我不知道會收到多少答案,所以我決定等待幾秒鐘。主要問題是,socket_recvfrom塊和所有的代碼卡住了...有沒有什麼辦法等待幾秒鐘,並停止套接字?如何使用socket_recvfrom讀取套接字數據?

我的代碼:

$end_time = time() + 2; 

while ($end_time > time()) { 
    socket_recvfrom($socket, $buffer, 2500, 0, $from, $port); 
    var_dump($buffer); 
} 
+2

http://www.php.net/manual/en/function。 socket-recvfrom.php 看看旗幟部分... –

回答

1

您可以使用MSG_DONTWAIT標誌設置的功能,非阻塞模式:

$end_time = time() + 2; 

while ($end_time > time()) { 
    socket_recvfrom($socket, $buffer, 2500, 0, $from, $port, MSG_DONTWAIT); 
    var_dump($buffer); 
    // sleep 500ms to decrease cpu usage 
    usleep(500000); 
} 
相關問題