适用于多个客户端的PHP Socket Server

时间:2012-10-05 09:29:56

标签: java php sockets socketserver

  

可能重复:
  A PHP Socket Server with Flash Clients

我在Flash开发人员的帮助下在我的服务器中构建了一个应用程序,他让我构建一个套接字服务器来与数据库进行通信。他推荐我JAVA,但我不是很擅长JAVA,我想知道是否可以在PHP中构建一个Socket服务器。

我应该允许连接到多个TCP客户端连接。我知道在JAVA中这是思想线程,但我不确定这是否也可以通过PHP实现。

有人可以告诉我具有这些特性的PHP套接字服务器的基本框架吗?

从连接开始到应用程序,直到结束,连接必须是TCp(持久性)。

3 个答案:

答案 0 :(得分:2)

您必须从命令行将套接字服务器作为服务运行。 这是我以前用过的一部分。它在读取后关闭套接字,但可以很容易地修改以保持连接数组。

  • 您必须构建某种监视程序才能查看连接是否仍然存在。
  • 您需要一种识别机制来识别不同的连接。

代码:

set_time_limit( 0 );
// Set the ip and port we will listen on
$address = '127.0.0.1';
$port = 6789;

// Create a TCP Stream socket
$sock = socket_create( AF_INET, SOCK_STREAM, 0 ); // 0 for  SQL_TCP
// Bind the socket to an address/port
socket_bind( $sock, 0, $port ) or die( 'Could not bind to address' );  //0 for localhost
// Start listening for connections
socket_listen( $sock );

//loop and listen
while (true) {
  /* Accept incoming  requests and handle them as child processes */
  $client = socket_accept( $sock );
  // Read the input  from the client – 1024000 bytes
  $input = socket_read( $client, 1024000 );

  // from here you need to do your database stuff
  // and handle the response 

   // Display output  back to client
  socket_write( $client, $response );
  socket_close( $client );
}
// Close the master sockets
socket_close( $sock );

答案 1 :(得分:0)

Google代码中有一个WebSocket Server and Client library for PHP。它支持Flash客户端。不确定它是否能解决您的问题。

如果你想要一个基本的教程,那就是学习的链接

How to create a socket server in php

编辑: - 查看您的评论(作为服务连续运行套接字服务器)

以下链接描述了创建套接字服务器并作为进程运行的方法

Create a socket server in php and run as a service

答案 2 :(得分:0)

您应该构建一组Web API(SOAP,REST / JSON,无论如何),而不是构建“套接字服务器”,它提供对数据库的有限且定义良好的访问。然后让Flash应用程序使用它。

您的Flash应用程序通过RESTful接口或SOAP / XML请求发送JSON。服务器接收它们,与数据库进行适当的交互,并以XML或JSON的形式再次返回任何所需的结果。