首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >套接字php,php,慢速套接字,最好执行套接字。

套接字php,php,慢速套接字,最好执行套接字。
EN

Stack Overflow用户
提问于 2015-01-29 15:19:31
回答 1查看 958关注 0票数 0

我创建了一个从PLC读取值的示例。当我使用一个函数套接字时,php页面工作得很好,但是当我放置两个或多个函数套接字时,我需要大约20个20secundes来打开一个php。

我可以改进我的代码,或者php中的套接字是这样的?

他的密码是:

代码语言:javascript
复制
<?php
    $dados_recebidos = analisa_dados_dos_turnos($host, $port);
    $ranking = prioridade_dos_turnos($host, $port);
?>
<?php
    function  analisa_dados_dos_turnos($host, $port)
    {   
        $message = "01ff000a4420000002583f00"; // D600 a D662
        $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket\n");     
        $result = socket_connect($socket, $host, $port) or die("Could not connect to server\n");        
        socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");        
        $result = socket_read ($socket, 1024) or die("Could not read server response\n");       
        socket_shutdown($socket);   
        return $result;
    }
    function prioridade_dos_turnos($host, $port)
    {   
        $message = "01ff000a4420000004291000"; // D1065 a D1079
        $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket\n");     
        $result = socket_connect($socket, $host, $port) or die("Could not connect to server\n");        
        socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");        
        $result = socket_read ($socket, 2048) or die("Could not read server response\n");       
        //socket_shutdown($socket); 
        return $result;
    }
?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-29 19:48:32

如果您多次重复analisa_dados_dos_turnos(),情况是否相同?

我不是套接字专家,但我会尝试添加一些时间计数代码,看看是哪个部分导致了延迟。

代码语言:javascript
复制
    $start_time = microtime(TRUE);
     //DO SOMETHING
    $stop_time = microtime(TRUE);
    $elapsedtime = $stop_time - $start_time;
    echo '<BR>Elapsed Time: '.$elapsedtime; 

例如,你可以

代码语言:javascript
复制
    $start_time = microtime(TRUE);
    $dados_recebidos = analisa_dados_dos_turnos($host, $port);
    $stop_time = microtime(TRUE);
    $elapsedtime = $stop_time - $start_time;
    echo '<BR>dados_recebidos 1 Elapsed Time: '.$elapsedtime;

    $start_time = microtime(TRUE);
    $dados_recebidos = analisa_dados_dos_turnos($host, $port);
    $stop_time = microtime(TRUE);
    $elapsedtime = $stop_time - $start_time;
    echo '<BR>dados_recebidos 2 Elapsed Time: '.$elapsedtime;

    $start_time = microtime(TRUE);
    $ranking = prioridade_dos_turnos($host, $port);
    $stop_time = microtime(TRUE);
    $elapsedtime = $stop_time - $start_time;
    echo '<BR>ranking 1 Elapsed Time: '.$elapsedtime;

    $start_time = microtime(TRUE);
    $ranking = prioridade_dos_turnos($host, $port);
    $stop_time = microtime(TRUE);
    $elapsedtime = $stop_time - $start_time;
    echo '<BR>ranking 2 Elapsed Time: '.$elapsedtime;

把它分解得更深,试试这个

代码语言:javascript
复制
     function prioridade_dos_turnos($host, $port)
{   
    $message = "01ff000a4420000004291000"; // D1065 a D1079

    $start_time = microtime(TRUE);
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket\n"); 
    $stop_time = microtime(TRUE);
    $elapsedtime = $stop_time - $start_time;
    echo '<BR>socket_create Elapsed Time: '.$elapsedtime;

    $start_time = microtime(TRUE);
    $result = socket_connect($socket, $host, $port) or die("Could not connect to server\n");
    $stop_time = microtime(TRUE);
    $elapsedtime = $stop_time - $start_time;
    echo '<BR>socket_connect Elapsed Time: '.$elapsedtime;

    $start_time = microtime(TRUE);
    socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");
    $stop_time = microtime(TRUE);
    $elapsedtime = $stop_time - $start_time;
    echo '<BR>socket_write Elapsed Time: '.$elapsedtime;

    $start_time = microtime(TRUE);        
    $result = socket_read ($socket, 2048) or die("Could not read server response\n");
    $stop_time = microtime(TRUE);
    $elapsedtime = $stop_time - $start_time;
    echo '<BR>socket_read Elapsed Time: '.$elapsedtime; 

    $start_time = microtime(TRUE);       
    socket_shutdown($socket);
    $stop_time = microtime(TRUE);
    $elapsedtime = $stop_time - $start_time;
    echo '<BR>socket_shutdown Elapsed Time: '.$elapsedtime;         
    return $result;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28218161

复制
相关文章

相似问题

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