[英]Websockets & PHP
我開始考慮將websockets作為替代我正在調試的新構建PHP應用程序中的長時間輪詢的解決方案。
我有幾個問題,我想知道是否有人可以幫助我。
思想將不勝感激。
請原諒我對您問題的解釋。
1: Node.js可以調用PHP,並且不會有與Apache相同的缺點嗎?
調用一次運行的PHP腳本將具有與調用網頁相同的一般缺點,只是要刪除額外的處理層。 Apache或任何Web服務器本身都是這么薄的一層,雖然您可以節省一些時間,但是節省的資金微不足道。
如果出於某種原因,PHP比Node.js在收集客戶端數據方面更有效,那么將PHP包含在應用程序中可能是明智的。
2: PHP和WebSockets是否很好匹配?
傳統的PHP腳本通常旨在每個請求運行一次。 絕大多數PHP開發人員都不熟悉事件驅動的開發,並且PHP本身(尚未)不支持異步處理。
PHP是一種快速,成熟的腳本語言,盡管有很多缺點和缺點,但它只會變得越來越快。 (有人說它的弱類型是一個缺點。其他人說它的類型不夠弱是一個缺點。)
也就是說,任何語言實現WebSocket所需的最低要求是能夠打開基本TCP端口並偵聽請求。 對於PHP,它是作為C套接字庫的一個薄包裝而實現的,並且還有其他可用的擴展和框架,它們也可以改變使用PHP在TCP套接字中工作的感覺。
PHP的垃圾收集器也已經成熟。 內存泄漏要么是由於對內存空間的完全無視(我在看您,Zend Framework),要么是因為認為自己很聰明或想要證明擊敗它很容易的開發人員故意破壞垃圾收集系統。 GC。 (劇透:如果您知道詳細信息,那么每種語言都很容易!)
在PHP中設置守護程序(長時間運行的后台進程)非常有可能並且非常容易。 甚至有可能使其行為良好,以正常重啟並將其連接移交給同一腳本的新版本,甚至是運行不同PHP版本的同一服務器上的同一腳本,盡管這超出了范圍。一點點。
至於是否合適, 完全取決於開發人員 。 您是否願意,有能力並且很高興與PHP一起編寫WebSockets服務器或使用現有服務器之一? 是? 然后, 您非常適合PHP和WebSockets。
3: WebSockets的JS庫
老實說,我還沒有研究過它們。
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()
。
但是,在上面的鏈接上有很多更好的信息,因此只要存在該鏈接,請遵循它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.