Workerman —— 高性能的 PHP socket 框架

bsum8619 8年前發布 | 44K 次閱讀 PHP Socket 高性能 PHP開發

來自: 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-RpcPHP-Thrift-RpcPHP-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>

 本文由用戶 bsum8619 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!