socket php, php, slow socket, 更好的socket性能
socket php, php, slow socket, better perform socket
我为从 PLC 读取值创建了一个应用程序。
当我使用一个功能套接字时,php 页面工作正常,但是当我放置两个或更多功能套接字时,我需要大约 20 秒才能打开一个 php.
Somene Knwos 我可以改进我的代码或 php 中的套接字是这样的???
他我的代码:
<?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;
}
?>
多次重复analisa_dados_dos_turnos()是否一样?
我不是套接字专家,但我会尝试添加一些时间计数代码来查看是哪个部分导致了延迟。
$start_time = microtime(TRUE);
//DO SOMETHING
$stop_time = microtime(TRUE);
$elapsedtime = $stop_time - $start_time;
echo '<BR>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 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;
并进一步分解它试试这个
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;
}
我为从 PLC 读取值创建了一个应用程序。 当我使用一个功能套接字时,php 页面工作正常,但是当我放置两个或更多功能套接字时,我需要大约 20 秒才能打开一个 php.
Somene Knwos 我可以改进我的代码或 php 中的套接字是这样的???
他我的代码:
<?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;
}
?>
多次重复analisa_dados_dos_turnos()是否一样?
我不是套接字专家,但我会尝试添加一些时间计数代码来查看是哪个部分导致了延迟。
$start_time = microtime(TRUE);
//DO SOMETHING
$stop_time = microtime(TRUE);
$elapsedtime = $stop_time - $start_time;
echo '<BR>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 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;
并进一步分解它试试这个
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;
}