(Image via)
今年 PHPConf 的一大亮點在於大家終於發現,原來 PHP 結合 Libevent 可以爆發出驚人的效能,把各大對手遠遠甩在腦後。事實上,早從 PHP4 開始,就已經有完整的 Socket 與 cli 環境支援,很容易就能編寫即時回應的 Comet Service 用在留言板之類的功能。
之所以沒有那麼普及,是因為採用 Socket 編寫 Web Server 相較於直接搞個 Ajax long polling 來說太過難懂,而且至今網路上對於 PHP Socket 的教學也不多。不過相關的一些函式庫其實也蠻多的了,例如 Socket.io, phpsocket.io 與 phpDaemon ,這幾套都可以幫助我們寫出即時回應的伺服器事件回應。
會想要寫這篇,是因為最近剛好想要用 PHP 寫個背景應用程式(Daemon)來處理一些常駐服務,研究的過程發現,其實藉由 PHP CLI 介面,fork 兩次自己成為 Daemon 守護進程以後,就可以提供一個獨立於 Apache 之外簡單的 HTTP Server 功能。