簡體   English   中英

php socket編程,優缺點與方法

[英]php socket programming,Pros and cons and Approach

我正在執行一項任務,該任務需要使用套接字將實時數據(從其他服務器獲取)分發給客戶端。 我們使用drupal作為框架,因此選擇了PHP。

1)我想知道開發此服務器時應考慮的主要因素。如安全性,身份驗證,負載等,以及我應該如何處理。是否有任何博客/文章可能對您有所幫助。

2)是否有比PHP更好的選擇?

3)ALSO是否有任何drupal模塊可以幫助我。

  1. 當您談論連接到您的多個服務器時,我可以考慮一個問題,您可能希望放棄非阻止模式。
    因為當您使用阻塞Mod時,每個服務器都可以同時連接,這意味着傳遞消息會有所延遲。 http://il2.php.net/manual/zh/function.socket-set-nonblock.php

  2. 我認為Java會更好,多線程可能會有所幫助。

  3. 從我的角度來看,這是您開發自己的東西,套接字編程需要很多注意。

Drupal是一個Web CMS,可以用作高級Web功能的框架或適合傳統 HTTP請求范例的輕型到中型Web應用程序。 恕我直言,使用套接字從多個服務器向客戶端分發實時數據與Drupal設計背后的基本假設不符。

PHP可用於編寫套接字服務器。 它曾經很少見,但現在變得越來越可用。 ReactPHP是適合套接字編程的非阻塞I / O庫/框架。 Racthet是使用ReactPHP的PHP Websocket服務器。

無論如何,這與使用RoR,Drupal,Django,Symfony等開發Web應用程序無異。

如果需要與Drupal網站集成,則服務模塊是提供REST或XML-RPC API的不錯的解決方案。 或者,當然,也可以直接訪問Drupal的MySQL數據庫,但可能需要更多有關已用Drupal模塊的知識,因為您將必須復制它們的行為並了解它們如何管理其數據(例如,如何存儲特定的CCK字段)在您的數據庫中)。

注意:此答案的先前版本包括對其他語言的以下解決方案的引用: Twisted (Python), EventMachine (Ruby)和Node.js (JavaScript)。 當不需要PHP時,這些都是有效的解決方案。 答案的先前版本也引用了phpsocketdaemon ,但是如今,ReactPHP是一個更干凈,更可靠的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM