Workerman —— 高性能的 PHP socket 框架
來自: http://www.oschina.net/p/workerman?fromerr=lCAgdwPg
?
Workerman 是一個高性能的PHP socket 服務器框架,workerman基于PHP多進程以及libevent事件輪詢庫,PHP開發者只要實現一兩個接口,便可以開發出自己的網絡應用,例如Rpc服務、聊天室服務器、游戲服務器等。
Workerman 的目標是讓PHP開發者更容易的開發出基于socket的高性能的應用服務,而不用去了解PHP socket以及PHP多進程細節。 workerman本身是一個PHP多進程服務器框架,具有PHP進程管理以及socket通信的模塊,所以不依賴php-fpm、nginx或者apache等這些容器便可以獨立運行。
特性
-
使用PHP開發
-
支持PHP多進程
-
支持TCP/UDP
-
接口上支持各種應用層協議
-
支持libevent事件輪詢庫,支持高并發
-
支持服務平滑重啟
-
支持PHP文件更新檢測及自動加載
-
支持PHP長連接
-
支持以指定用戶運行子進程
-
支持telnet遠程控制
-
高性能
基于workerman已經有很多的網絡應用程序,例例如 多人在線小蝌蚪游戲 、 PHP-Json-Rpc 、 PHP-Thrift-Rpc 、 PHP-WebSocket聊天室 、 PHP統計監控系統 等等。
示例代碼:
<?php use Workerman\Worker; require_once './Workerman/Autoloader.php';// 創建一個Worker監聽2346端口,使用websocket協議通訊 $ws_worker = new Worker("websocket://0.0.0.0:2346");
// 啟動4個進程對外提供服務 $ws_worker->count = 4;
// 當收到客戶端發來的數據后返回hello $data給客戶端 $ws_worker->onMessage = function($connection, $data) { // 向客戶端發送hello $data $connection->send('hello ' . $data); };
// 運行 Worker::runAll();</pre>
性能壓力測試
測試環境:
系統:ubuntu 12.04 LTS 64位 內存:8G cpu:Intel? Core? i3-3220 CPU @ 3.30GHz × 4業務邏輯:
hello world結果:
短鏈接(每次請求完成后關閉鏈接,下次請求建立新的鏈接): 條件: 壓測腳本開500個線程,每個線程鏈接Workerman 10W次,每次鏈接發送1個請求 結果: 吞吐量:3W/S , cpu:60% , 內存占用:4*8M = 32M長鏈接(每次請求后不關閉鏈接,下次請求繼續復用這個鏈接): 條件: 壓測腳本開1000個線程,每個線程鏈接Workerman 1次,每個鏈接發送10W請求 結果: 吞吐量:13W/S , cpu:68% , 內存占用:4*8M = 32M無流量抖動,無內存泄漏,性能非常強悍workerman啟動界面:
![]()
workerman狀態查看界面:
</div>
![]()