2011-04-27 42 views
3

我無法弄清楚我的生活像Cometd或簡單彗星的應用程序的目的,就像一個簡單的longpolling請求與PHP和一個代碼如此的代碼無限循環彗星軟件優於標準長輪詢

$time = time(); 
while(time() - $time < 30) { 
    if ($query) { 
     $shapes = ...; 
     echo json_encode($shapes); 
     break; 
    } 
    usleep(25000); 
} 

在爲多個請求設計的網絡服務器上運行,如lighttpd或NGIX。

也許我只是想知道彗星服務的文檔。我知道上面是一個「彗星」的要求,但爲什麼像cometd這樣的東西存在,他們做的更好。

+0

其中之一是,在你的例子中,響應之間不會有250毫秒的延遲。另外,您不必爲每個活動連接都有一個完整的PHP進程。這些東西很重。您應該能夠在每臺服務器上打開更多的彗星連接,而不是使用等效的PHP長輪詢解決方案。 – 2011-04-27 20:18:11

+0

@frank apache是​​唯一爲每個連接留下一個線程的網絡服務器。 lighttpd實際上是爲多線程連接而設計的。 – austinbv 2011-04-27 20:31:58

+0

儘管PHP本身並不是真正的線程安全的 - 當然,許多PECL模塊並不是。使用lighttpd/nginx,你不會得到一個爲每個活動連接運行的PHP CGI過程嗎? – 2011-04-27 22:13:25

回答

1

Cometd和類似的orbitd這樣的軟件非常適合打破區域責任。我可以讓我的lighttpd支持的python服務專注於做更多的參與工作,而彗星服務綁定到消息隊列來處理light消息通知(如批處理請求已完成,您有一條新消息等),而lighttpd服務器處理DB請求或處理POST/PUT/DELETE請求。

最後一點,Apache仍然是一個非常受歡迎的Web服務器,但如果它試圖保持一千或更多的連接打開,它將在一片榮耀中死去。對於想要添加彗星支持的apache服務器陣列的平臺,使用開箱即用的解決方案而不是使用lighttpd或nginx進行滾動。