首頁 > 後端開發 > php教程 > PHP 能否有效處理基於 Comet 的即時訊息傳遞?

PHP 能否有效處理基於 Comet 的即時訊息傳遞?

DDD
發布: 2024-12-31 00:26:16
原創
530 人瀏覽過

Can PHP Effectively Handle Comet-Based Real-Time Messaging?

PHP 可以支援 Comet 即時訊息傳遞嗎?

可以考慮使用 PHP 作為後端來實現即時聊天。然而,一個常見的批評給這個想法蒙上了陰影:

「據報道,PHP 對於Comet 來說是一個糟糕的選擇,因為它需要與每個瀏覽器客戶端保持持久連接。使用mod_php 需要為每個瀏覽器用戶端專門綁定一個Apache子進程。

Apache 的執行緒管理

每個Apache請求都會使用一個單獨的工作線程直至其完成。以持續時間長著稱的 Comet 請求可以獨佔這些執行緒。

PHP 的並發執行限制

即使 Apache 的線程分配得到解決,PHP 的本質還是需要唯一的線程根據要求。結果,FastCGI 未能解決這種情況。

Continuations:超出 PHP 的範圍

Continuations 本身並不支援在事件觸發時恢復 Comet 請求。 PHP 支援。

可以解決方案

儘管存在這些障礙,但仍然存在解決方法:

Apache 的事件MPM:

Apache 的事件MPM:

  • Apache 的事件MPM:
  • Apache 🎜> Apache 的「事件」MPM 以不同的方式處理Keep Alive狀態,但它仍然有效將線程“暫停”推遲到請求之後
  • 負載平衡器路由:
  • 透過使用負載平衡器,可以委託Apache 和支援Comet 的伺服器(例如Jetty、 Tomcat)來處理單一連接埠上的請求。

注意事項

這些解決方案附帶警告。事件 MPM 可能不會提供顯著的改進,並且負載平衡會為架構帶來額外的複雜性。

以上是PHP 能否有效處理基於 Comet 的即時訊息傳遞?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板