首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP连接时延

PHP连接时延
EN

Stack Overflow用户
提问于 2017-07-27 08:46:31
回答 1查看 170关注 0票数 2

我有一个TCP服务器运行在我的raspberry pi上,当它接收到命令"r“时,它可以返回一些感觉数据。在telnet中,这看起来像:

R 123,123,131,321;

我立即从服务器上得到了一个带有telnet的答案。由于我想查看来自不同设备的数据,所以我决定构建一个PHP和javascript接口。

在我的javascript代码中,我调用PHP方法来读取用于读取TCP服务器的php方法:

代码语言:javascript
复制
$.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:

代码语言:javascript
复制
<?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方面的专家,这可能是一个明显的错误,但我无法理解。

为什么这么慢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-28 07:40:57

我在我的raspberry pi上运行了一个模拟TCP客户机。区别在于我使用的是fread($fp, 20);而不是fgets ($fp, 1024);

所以试试这个:

代码语言:javascript
复制
<?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);
    }
?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45345702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档