我有一个用PHP编写的UDP守护程序,用于接收来自远程UDP设备的数据。
$sock = socket_create(AF_INET, SOCK_DGRAM, 0);
socket_bind($sock, 0, $port) or die('Could not bind to address');
while (true) {
$r = socket_recvfrom($sock, $buf, 65535, 0, $remote_ip, $remote_port);
echo "$remote_ip : $remote_port -- " . $buf ."\n";
echo strlen($buf) . "\n";
// DO DATABASE FUNCTIONS
}
是否有一种方法可以在每x次迭代后刷新缓冲区,因为似乎在某个时刻它已填满,并且直到我杀死并重新启动应用程序后,数据库功能才似乎不再起作用了?
数据不是关键(这就是为什么我使用UDP的原因)
最佳答案
$sock = socket_create(AF_INET, SOCK_DGRAM, 0);
socket_bind($sock, 0, $port) or die('Could not bind to address');
while (true) {
$r = socket_recvfrom($sock, $buf, 65535, 0, $remote_ip, $remote_port);
echo "$remote_ip : $remote_port -- " . $buf ."\n";
echo strlen($buf) . "\n";
if(strlen($buf)%1024 == 0)
{
flush();
ob_flush();
}
// DO DATABASE FUNCTIONS
}
有时,您可能还需要使用
flush()
。原因在这里解释:https://stackoverflow.com/a/4191417/1218075
关于php - PHP socket_recv来自免费资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30438442/