2011-02-07 143 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是一個更乾淨和強大的解決方案。