Как освободить порт используя PHP? - PullRequest
0 голосов
/ 27 июня 2018

Я использую сокеты PHP для получения данных на уровне TCP / IP, я могу сделать это с текущим кодом, но кажется, что через некоторое время сервер сокетов выходит из строя и порт становится бесполезным.

Когда это происходит, я больше не могу получать данные через этот порт, и данные, которые я получаю, поступают с устройства, которые распределяются по нескольким местоположениям. После этого я не могу вручную изменить порт, чтобы он снова заработал.

Мне интересно, есть ли способ завершить процесс / разблокировать порт и снова запустить процесс после сбоя?

<?php

require_once("SocketServer.php"); // Include the File
$server = new SocketServer("XX.XXX.XX.XX",3030); // Create a Server binding to the given ip address and listen to port XXXX for connections
$server->max_clients = 10; // Allow no more than 10 people to connect at a time
$server->hook("CONNECT","handle_connect"); // Run handle_connect every time someone connects
$server->hook("INPUT","handle_input"); // Run handle_input whenever text is sent to the server
$server->infinite_loop(); // Run Server Code Until Process is terminated.


function handle_connect(&$server,&$client,$input)
{
    SocketServer::socket_write_smart($client->socket,"String? ","");
}
function handle_input(&$server,&$client,$input)
{
    // You probably want to sanitize your inputs here
    $trim = trim($input); // Trim the input, Remove Line Endings and Extra Whitespace.
      $file_p = dirname(__FILE__) . '/input.json';
      $fp = fopen($file_p,"wb");
      fwrite($fp,$trim);
      fclose($fp);


    if(strtolower($trim) == "quit") // User Wants to quit the server
    {
        SocketServer::socket_write_smart($client->socket,"Oh... Goodbye..."); // Give the user a sad goodbye message, meany!
        $server->disconnect($client->server_clients_index); // Disconnect this client.
        return; // Ends the function
    }




    SocketServer::socket_write_smart($client->socket,$output); // Send the Client back the String
    SocketServer::socket_write_smart($client->socket,"String? ",""); // Request Another String
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...