PHP - 并发stream_socket_accept连接?

时间:2016-03-24 05:14:28

标签: php sockets concurrency

我一直在尝试使用流功能设置套接字服务器。但有一个问题是:在我的代码中,我有:

while($conn = @stream_socket_accept($server))
{

  $request = "";

  while(substr($request, -4) !== "\r\n\r\n")
  {

    $request .= fread($conn, 1024);

  }

  $headers = "HTTP/1.1 200 OK\r\nServer: PHP " . phpversion() . "\r\nContent-Type: text/html\r\n\r\n";

  fputs($conn, $headers);

  fclose($conn);

}

所以,你可以看到我fclose($ conn),否则header / HTML没有被发送到客户端,当我关闭它时,它将不接受任何其他连接。任何帮助都将非常感谢,谢谢!

修改

我在0.0.0.0:80运行它,所以你可以尝试here

1 个答案:

答案 0 :(得分:0)

我认为你真正想做的是:

    while (true) {
        $conn = @stream_socket_accept($server);

        if ($conn) {
            $request = "";

            while(substr($request, -4) !== "\r\n\r\n") {
                $request .= fread($conn, 1024);
            }

            $headers = "HTTP/1.1 200 OK\r\nServer: PHP " . phpversion() . "\r\nContent-Type: text/html\r\n\r\n";

            fputs($conn, $headers);
            fclose($conn);
        }

        // only break out of this loop if you want to close the server
    }