Я попытался написать проект PHP для связи с ПЛК, но у меня возникла проблема, когда я закрываю клиент сокета, он не закрывается сразу, количество подключенных устройств увеличивается, когда я вызываю функцию AJAX для перезагрузки значений, может ли кто-нибудь мне помочь? Я использую RS_sim для имитации ПЛК
Мой код для создания и закрытия клиента сокета:
private function connect(){
// Create a protocol specific socket
if ($this->socket_protocol == "TCP"){
// TCP socket
$this->sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
}
$result = @socket_connect($this->sock, $this->host, $this->port);
if ($result === false) {
throw new Exception("socket_connect() failed.</br>Reason: ($result)".
socket_strerror(socket_last_error($this->sock)));
} else {
$this->status .= "Connected\n";
return true;
}}
private function disconnect(){
socket_close($this->sock);
$this->status .= "Disconnected\n";}
Ожидает ли сервер, что вы отправите команду закрыть соединение? Закрытие соединения в клиенте без сообщения серверу может быть недостаточным
Спасибо за вашу поддержку, Марио и Джони, я попробую с настоящим ПЛК.






Вы получили сообщение об ошибке для socket_close? Если не в PHP, то в симуляторе? Это длительный скрипт или просто одноразовое подключение? (Возможно, также попробуйте
straceпроверить ваш работающий скрипт.)