PHP 套接字不发送


PHP socket doesn't send

我正在尝试将一些纯文本数据发送到本地运行的石墨服务器,这是相同的代码:

<?php
error_reporting(E_ALL);
$address = '127.0.0.1';
$port = 2003;
$fsock = fsockopen($address,$port);
for($i=1;;$i++){
  $send = "dummy.metric.value ".$i." ".time();
  $sent = fwrite($fsock, $send, strlen($send));
  echo $send ." sent ".$sent."'n";
  sleep(4);
}
?>

没有错误,但石墨服务器不显示新数据。服务器正在运行,我可以通过nctelnet发送数据

另外不要忘记检查 carbon.conf,因为默认情况下 UDP 侦听器处于关闭状态。

这个选项愚弄了我,因为显然StatsD和Graphite在同一主机上使用TCP进行通信。我测试了插入指标

echo "test.foo 20 `date +%s`" | nc 192.168.10.10 2003

但是在阅读手册页后,事实证明您必须将 -you 添加到 nc 以使用 UDP 强制它。

希望这能为其他人节省一些时间。

您正在打开一个 TCP 流 - 但石墨使用 UDP ?