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