2012-05-03 70 views
3

我一直在尋找使用PHP製作實時網站。 (COMET)我一直在尋找很長時間。 (大約一個月)我甚至檢查了一些PHP聊天腳本並在我的網絡服務器上使用,但是我在其中大部分都遇到了一些問題。 (將解釋)PHP&COMET。需要一些指導

到目前爲止,大多數人告訴同樣的事情:PHP不是可以用於COMET的最佳語言。聊天/彗星的例子是最好的。

我在問這個,因爲我想在我的網站上有一些功能,比如允許登錄的人聊天。那就是我需要一個到PHP頁面的活動連接。我也計劃製作一款基於瀏覽器的遊戲,並且活着的連接仍然是必須的!

2年前,AJAX是一件罕見的事情,與Facebook一起閃閃發光。現在幾乎每個人都使用它,並且它成爲Web開發的標準。現在,基於COMET的網站正在增長。 Youtube,Google+,Facebook,EA的Battlelog等等。我相信我應該學會如何使用它。

好的,這是我的問題。 (有些信息在下面是我收集的,而在谷歌搜索的人。不知道他們是正確與否。)

  1. 像Python一些語言設計了適合這個工作的特殊Web服務器。我相信其中之一被稱爲Tornado Web Server。開發並配置爲模擬數千個活動連接。我相信Appserv沒有這樣的選擇,但有些人告訴NGINX可以用一個體面的配置來處理它。這是真的嗎?應該做什麼樣的配置?這個工作有沒有PHP網絡服務器?

  2. 一些最建議的事情是:

    一個。使用APE。

    b。使用Socket.IO

    c。 Node.js

    有什麼辦法可以將它們用於PHP?哪一個是最有前途的?你能給他們一些指導嗎?除了這些還有別的嗎?

  3. 我已經使用了彗星聊天腳本。基本上,您一直在查詢數據庫並使用flush()函數向瀏覽器輸出結果,方法是使用usleep()在循環中進行休眠。 (這其中也變得很難理解,所以我將提供一個簡單的代碼)

    while(true) 
    { 
        // query database 
        // output the result 
        // flush the browser 
        // sleep for few seconds to lower cpu load 
    } 
    

usleep()功能基本上摧毀了基於Windows操作系統的我的Web服務器。在基於Windows的操作系統上運行的彗星應用程序依賴usleep()是否正常?我的意思是,有沒有辦法「睡覺」PHP腳本?無論我做什麼,WIN和UNIX服務器上的CPU負載都會達到%100。

  1. PHP「真的」在這方面薄弱嗎?我應該放棄PHP並專注於其他語言嗎?如果是這樣,你會建議哪種語言? (這種語言應該是有希望的,例如,在HTML5添加之後沒有太多AS3的使用,並且AS3在JS發光時很快就會死亡。)

  2. 什麼是WebSync?它可以與PHP一起使用嗎?

請記住,我需要使用COMET做出以下應用:

  • 一個聊天腳本,其中在玩家登陸就可以聊天海誓山盟。
  • 基於瀏覽器的遊戲。在編碼時我已經使用JSON/AJAX等類似的東西,但爲了接收對手的步驟,我應該提取數據,因此需要一個活躍的連接。 (不要想象高級遊戲,我最好是在講國際象棋這樣的遊戲。)

如果你能給我一個簡短的指導,我將不勝感激。畢竟,我一直在困惑,因爲在互聯網上有很多隨機文章。人們甚至撥打setInterval()作爲COMET,所以它是一個完整的混亂。

+0

如果你想要做的實時應用,我會建議node.js的:) – Menztrual

+1

http://me.veekun.com/博客/ 2012/04/09/PHP-A-分形的壞設計/給出了PHP的一個很好的總結,P – Menztrual

+0

_Should我放棄與PHP_?你的意思是一般?當然不。使用這個作爲你的主要語言是完全可以接受的,同時使用更適合於任務的其他東西。對於Comet來說,使用一些簡單而輕量的實現線程的東西,並且可以與您的網站的數據庫進行交流。 – halfer

回答

1

需要有一些在這裏澄清。你正在尋找的不是語言本身。如果你想用PHP實現彗星功能,你將依靠Web服務器(例如Apache)來執行HTTP流式傳輸。此外,您需要了解HTTP/1.1之前的HTTP版本不支持此功能。有了這個說法,如果你想擁有一個基於非阻塞事件的Web服務器,最好按照建議的方式查看Tornado和Node。

0

Comet是一種編程技術,使網絡服務器將數據發送到客戶端,而不需要任何客戶端請求它這種技術將通過點擊產生更多的響應應用比典型的AJAX用戶必須創建一個請求(例如在鏈接上)或週期性的AJAX請求必須發生,以便從服務器獲取新數據。

,但它創造了大量流量的Web服務器上。如果你想在PHP中使用推送器來建立聊天應用程序,這是一種第三方服務,並且易於使用。 這裏是推動者的鏈接https://pusher.com/tutorials/realtime_chat_widget

第二個建議是使用棘輪創建一個聊天應用程序。 這裏是鏈接,棘輪http://socketo.me/docs/hello-world

我希望它會幫助你