2012-02-26 24 views
0

我需要使用PHP開發HTTP推送實現HTTP推(在PHP)與出,它發回一個消息到瀏覽器每20秒..,我需要在服務器上顯示使用任何文庫或插座

有沒有什麼辦法可以在PHP中使用任何套接字或庫實現http push?

+0

我需要開發使用PHP的HTTP推送,它每20秒發送一條消息給瀏覽器..我需要在服務器上顯示。 – user1234077 2012-02-26 17:07:47

+0

正如Andrew所建議的那樣,下面,通過JavaScript進行輪詢通常是一種更好的解決方案,而不是推送運行,捆綁Apache連接。看看[Comet](http://en.wikipedia.org/wiki/Comet_%28programming%29)。 – ghoti 2012-02-27 12:40:31

回答

3

當然:不要讓你的PHP腳本終止,只要你想保持連接打開。由於您每20秒產生一次輸出,因此連接超時的可能性要小得多。

有很多方法來實現這一目標,包括阻塞(如睡眠()以下)或busy waiting,但最簡單的解決辦法是:

while(true){ 
    generate_output(); 
    sleep(20); 
} 

您可能需要處理在客戶端的意外連接終止,但這是它的傑作。檢查您的系統配置,查看您可以處理多少個打開的連接。 (在Apache中,看到的MaxClients)

至於客戶端,看到這個答案https://stackoverflow.com/a/7953033/329062

1

做到這一點的唯一方法是使用WebSockets,「長輪詢」,或一個AJAX請求每20秒(即使沒有更新)。您的解決方案將取決於您想要支持哪些瀏覽器。例如,較新的瀏覽器支持Web套接字,但較舊的瀏覽器不支持。我會推薦研究Web套接字。對於這種情況,這是一個很好的解決方案。