PHP检查Socket是否仍然连接

时间:2014-05-27 13:50:38

标签: php sockets

我在PHP中试用套接字。我只对C#,Java和Basic中的这些东西有过经验。在C#和Java中,有一个名为" Connected"或" isConnected",但在PHP中,我找不到这样的功能来检查套接字是否仍然连接。 我读过我发送或接收要检查的数据,但有没有办法检查套接字的连接状态而不发送或接收,因为检查必须在if子句中,新的套接字将是在数组中创建或旧的将使用。发送和接收数据是另一个功能。

一些有效的代码,但总是在数组中使用新条目......

$Worker = Array();

        while($this->Listener)
        {
            $accept = socket_accept($this->Listener);
            if($accept)
            {
                $jumpout = false;
                for($i = 0; $i < count($Worker); $i++)
                {
                    if(!$Worker[$i]) // check whether socket is connected or not
                    {
                        $Worker[$i] = $accept;
                        unset($accept);
                        $this->Logger->Write("New Client connected - " . $i);
                        $jumpout = true;
                    }
                }
                if(!$jumpout)
                {
                    $Worker[count($Worker)] = $accept;
                    unset($accept);
                    $this->Logger->Write("New Client connected - " . (count($Worker) + 1));
                }
            }
            socket_listen($this->Listener);
        }

在没有使用复杂的线程或其他复杂的东西的情况下,是否不给套接字任何事件或选项?

1 个答案:

答案 0 :(得分:-1)

使用if else尝试socket_get_status。它应该返回套接字的状态。

要详细了解如何使用它,请参阅以下示例:http://php.net/manual/en/function.socket-get-status.php