我有一个在我的覆盆子pi上运行的TCP服务器,它可以在收到命令“r”时返回一些sensordata。 在telnet中,这看起来像:
>> [R
123123131321;
我立即通过telnet从服务器获得答案。由于我想查看来自不同设备的数据,我决定构建一个PHP和javascript界面。
在我的javascript代码中,我调用PHP methed来读取用于读取TCP服务器的php方法:
<?php
$str = "oi";
$fp = fsockopen("localhost", 1234, $errno, $errstr, 30);
if (!$fp) {
echo "Fehler!";
} else {
fwrite($fp, "r");
$str = fgets ($fp, 1024);
fclose($fp);
}
echo json_encode($str);
?>
readTCP.php:
{{1}}
我遇到的问题是,使用此脚本读取TCP服务器需要45秒。
我不是PHP的专家,这可能是一个明显的错误,但我无法弄明白。
为什么这么慢?
答案 0 :(得分:1)
我在树莓派上运行了一个类似的TCP客户端。不同之处在于我使用的是fread($fp, 20);
而不是fgets ($fp, 1024);
。
所以试试这个:
<?php
$str = "oi";
$fp = fsockopen("localhost", 1234, $errno, $errstr, 30);
if (!$fp) {
echo "Fehler!";
} else {
fwrite($fp, "r");
$str = fread($fp, 20);
echo json_encode($str);
fclose($fp);
}
?>