php socket编程,优缺点和方法

时间:2011-02-07 04:44:00

标签: php drupal sockets

我正在开展一项任务,需要使用套接字将实时数据(从其他服务器获取)分发到客户端。我们使用 drupal 作为框架,因此我选择了PHP。

1)我想知道在开发这个服务器时应该考虑的主要因素。像安全性,身份验证,加载等,我应该如何处理这个问题。是否有任何博客/文章可以提供帮助。

2)有没有比PHP更好的选择呢?

3)也有任何drupal模块可以帮助我。

2 个答案:

答案 0 :(得分:2)

  1. 当您谈到连接到您的多台服务器时,我可以考虑一个问题,您可能想要隐藏非阻塞模式。
    因为当你使用阻塞mod时,每个服务器当时都可以连接,这意味着传递消息会有延迟。 http://il2.php.net/manual/en/function.socket-set-nonblock.php

  2. 我认为java会更好选择,多线程可能会有所帮助。

  3. 从我的角度来看,这是你需要开发自己的东西,socket编程需要很多关注。

答案 1 :(得分:1)

Drupal是一个Web CMS,它可以用作框架,用于高级Web功能或轻量级到中型Web应用程序,非常适合传统 HTTP请求范例。恕我直言,使用套接字将多个服务器的实时数据分发到客户端不符合Drupal设计背后的基本假设。

PHP可用于编写套接字服务器。它曾经不常见,但它变得越来越有用。 ReactPHP是一个适用于套接字编程的非阻塞I / O库/框架。 Racthet是使用ReactPHP的PHP中的websocket服务器。

无论如何,这与使用RoR,Drupal,Django,Symfony等开发 Web应用程序无关。

如果需要与Drupal网站集成,Service module是提供REST或XML-RPC API的不错解决方案。或者,直接访问Drupal的MySQL数据库也是一种选择,但可能需要更多使用Drupal模块的知识,因为你必须复制他们的行为并理解他们如何管理他们的数据(例如,如何存储特定的CCK字段)在你的数据库中)。

注意:此答案的早期版本包括对其他语言的以下解决方案的引用:Twisted(Python),EventMachine(Ruby)和Node.js(JavaScript)。当不需要PHP时,这些都是有效的解决方案。 该答案的先前版本也引用了phpsocketdaemon,但现在ReactPHP是一个更加干净和强大的解决方案。