我有一个TCP服务器运行在我的raspberry pi上,当它接收到命令"r“时,它可以返回一些感觉数据。在telnet中,这看起来像:
R 123,123,131,321;
我立即从服务器上得到了一个带有telnet的答案。由于我想查看来自不同设备的数据,所以我决定构建一个PHP和javascript接口。
在我的javascript代码中,我调用PHP方法来读取用于读取TCP服务器的php方法:
$.ajax('readTCP.php', {
type: 'POST',
cache: false,
async: false,
dataType: 'json',
success: function(data){
drawStatus();
$('.statustext').text('Status: ' + data);
},
error: function() {
console.error("fehler")
}
});readTCP.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);
?>我遇到的问题是,用这个脚本读取TCP服务器需要45秒。
我不是PHP方面的专家,这可能是一个明显的错误,但我无法理解。
为什么这么慢?
发布于 2017-07-28 07:40:57
我在我的raspberry pi上运行了一个模拟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);
}
?>https://stackoverflow.com/questions/45345702
复制相似问题