2011-02-07 81 views
0

我正在开发一个任务,它需要使用套接字将实时数据(从其他服务器获取)发布到客户端。我们用户drupal作为框架,因此我选择了PHP。php socket编程优点与缺点

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

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

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

回答

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

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

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

1

Drupal是一个Web CMS,它可以用作框架用于高级网络的特征或光到的是,在传统的 HTTP请求范例合身介质web应用程序。恕我直言,使用套接字将实时数据从多个服务器分发到客户端并不符合Drupal设计背后的基本假设。

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

在任何情况下,这会没事甲肾上腺素像开发一个Web应用程序与回报率,Drupal的,Django的,Symfony的等

如果需要使用一个Drupal网站整合,Service module是一个很好的解决方案提供了一个REST或XML-RPC API。或者当然,直接访问Drupal的MySQL数据库也是一种选择,但可能需要更多关于使用的Drupal模块的知识,因为您将不得不复制其行为并理解他们如何管理其数据(例如,如何存储特定的CCK字段在你的数据库中)。

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