我需要从UDP套接字获取信息,但事实上我不知道将收到多少答案,所以我决定等待几秒钟。主要问题是socket_recvfrom
块和所有代码都被卡住了......有没有办法等待几秒钟并停止套接字?
我的代码:
$end_time = time() + 2;
while ($end_time > time()) {
socket_recvfrom($socket, $buffer, 2500, 0, $from, $port);
var_dump($buffer);
}
答案 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);
}