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