PHP libevent vs stream_select 性能測試
2010年1月12日
尚無評論
PHP 下要做 Socket 多工目前只有 select 或用超慢的 fork 方式 , 但學過 Socket Programing 的人都知道 select 在大量連線下的效能會很差 , 而在很早之前我曾在 PECL 看見有個 event 的 extension 是利用 Kernel 來處理 I/O 事件 , 舉凡 File , Socket 都可, 當時那套 event extension 是利用 Linux epoll 或 FreeBSD kqueue 的 Kernel API 直接幹的 , 現在則有另一套 libevent 的 extension 出現在 PECL 上 , 這個 extension 就是用同名 C 寫的 libevent 去實做 , libevent 也是會用到 epoll 及 kqueue 但提供了一組函數介面讓程式設計師不用去管 OS 是什就可以設計出高效能的多工程式 , 因此我特地抓下來玩一玩 , 並且寫了簡單的性能測試
由於 PHP libevent 需要搭配C 的 libevent 1.4 以上版本 , 所以並非每個 Linux 套件都有 , 例如我的 CentOS 的 libevent 版本就比較舊 , 因此要自行編譯 , 以下就說明 CentOS 5.4 下成功編譯 PHP libevent 的步驟
最新回應