請原諒我解釋你的問題。
1:Node.js是否可以調用PHP,並且不會有與Apache相同的缺點?
調用一次運行的PHP腳本與調用網頁具有相同的一般缺點,除了要刪除額外的處理層。 Apache或任何Web服務器本身就是一個如此薄的一層,雖然你會節省一些時間,但節省將是微不足道的。
如果PHP爲您的客戶端收集的數據比Node.js更有效,無論出於何種原因,那麼在您的應用程序中包含PHP可能是明智的。
2:PHP和WebSockets是否匹配?
傳統的PHP腳本通常意在每次請求運行一次。絕大多數PHP開發人員不熟悉事件驅動的開發,而PHP本身還不支持異步處理。
PHP是一種快速,成熟的腳本語言,只是速度越來越快,即使所有它的許多缺點和不足之處。 (有人說,它的弱類型是一個缺點,有人說它的缺點是它的類型不夠弱)。
也就是說,任何語言實現WebSockets所需的最低限度是打開建立一個基本的TCP端口並監聽請求。對於PHP,它是作爲C套接字庫的一個簡單包裝實現的,並且還有其他擴展和框架可用,這些擴展和框架也可以改變使用PHP在TCP套接字中工作的感覺。
PHP的垃圾收集器也日趨成熟。內存泄漏來自於對內存空間的嚴重忽視(我在看你,Zend Framework),或者來自開發人員故意破壞垃圾收集系統的人,他們認爲他們很聰明或想證明它是多麼容易擊敗GC。 (擾流板:這很容易在每一種語言,如果你知道詳情)
這是很可能的,很容易建立一個守護進程(長時間運行的後臺進程)在PHP。甚至有可能使它正常運行,以便正常重啓並將其連接關閉到相同腳本的新版本,甚至可以在運行不同版本PHP的同一臺服務器上使用同一腳本,儘管這僅僅是一個範圍微小一點。
至於是否匹配,完全由開發商決定。您是否願意,能夠並樂意使用PHP來編寫WebSockets服務器,或者使用其中一臺現有的服務器?是?然後你是與PHP和WebSockets很好的匹配。
3:JS庫的的WebSockets
老實說,我還沒有研究它們。
4:教程使用PHP和WebSockets的
我個人喜歡這個教程:http://www.phpbuilder.com/articles/application-architecture/optimization/creating-real-time-applications-with-php-and-websockets.html
雖然我有充分根據的是該教程的細節將很快過時了該特定的WebSockets服務器。 (目前仍是該服務器的積極維護原有分支,雖然)。
在鏈接腐爛的情況:
使用PHP-WebSockets的服務器(在Github上可用,不久將歸),延長基地WebSocketServer
抽象類,並實現抽象方法process()
,connected()
,並closed()
。
有在鏈路更好的信息上面,雖然如此,遵循它,只要存在鏈接。
Ratchet PHP很乾淨。我也正在[我自己的實現(包括演示)](https://github.com/PeeHaa/WebSocketDemo)。 – PeeHaa 2013-03-05 09:47:20
@PeeHaa不錯的演示 – Baba 2013-03-05 11:01:54
可能是有用的,包括演示應用程序,http://www.techzonemind。com/php-websocket-library-two-way-real-time-communication/ – 2014-05-07 15:49:14