如何用socket_recvfrom读取套接字数据?

时间:2014-03-12 10:16:28

标签: php sockets

我需要从UDP套接字获取信息,但事实上我不知道将收到多少答案,所以我决定等待几秒钟。主要问题是socket_recvfrom块和所有代码都被卡住了......有没有办法等待几秒钟并停止套接字?

我的代码:

$end_time = time() + 2;

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

1 个答案:

答案 0 :(得分: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);
}