软件简介
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
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();
性能压力测试
测试环境:
系统: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 状态查看界面:
{{item.user_info.nickname ? item.user_info.nickname : item.user_name}}
作者 管理员 企业
{{itemf.name}}
{{itemc.user_info.nickname}}
{{itemc.user_name}}
回复 {{itemc.comment_user_info.nickname}}
{{itemf.name}}