【发布时间】:2012-06-06 11:44:25
【问题描述】:
我正在尝试向本地运行的石墨服务器发送一些纯文本数据,以下是相同的代码:
<?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);
}
?>
没有错误,但石墨服务器不显示新数据。服务器正在运行,我可以通过nc和telnet发送数据
【问题讨论】:
-
它可能被缓冲了,在
sleep(4);之前添加对fflush()(fflush( $fsock);)的调用。 -
@nickb 照做了,还是一样。
-
您还需要发送 CRLF 吗?通过 telnet/nc 进行操作时是否按回车键?尝试将
."\r\n"添加到您传递给fwrite()的数据中 -
@DaveRandom:哇!从没想过这会是个问题。接得好!现在工作..
-
套接字的级别更低一些。它们需要控制字符来确定您的命令的开始和结束位置。