Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、手游服务端、网络游戏服务器、聊天室服务器、硬件通讯服务器、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。基于workerman开发者可以更专注于业务逻辑开发,不必再为PHP Socket底层开发而烦恼。
PHP语言的异步、并行、高性能网络通信框架,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。
Swoole可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网、车联网、智能家居等领域。 使用PHP+Swoole作为网络通信框架,可以使企业IT研发团队的效率大大提升,更加专注于开发创新产品。
Swoole采用C语言编写,相比使用原生PHP的Wokerman,性能更高,代码风格适合对socket操作比较熟悉的程序员使用(需要操作fd),对于一般PHP程序员有一定难度;
Wokerman文档比较齐全,学习起来更方便,代码逻辑比较清晰,风格统一,可以直接操作connection对象(以及为connection附加额外属性)而不需要太在意fd,对于普通PHP程序员更友好,而且因为使用原生PHP实现,出现问题也更好排查。
在使用时,需要根据实际情况,进行选择。
下面是二者http server性能的简单对比:
环境:阿里云ECS
OS:CentOS 7 x64
CPU:Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz(1 core 1GHz)
Memory:1G
ab -c1000 -n100000 -k http://127.0.0.1:8801/
lnmp(php-fpm5.4 nginx 1.8.0):
<?php echo 'hello world!';
测试结果:

wokerman http server:
<?php require_once __DIR__.'/vendor/autoload.php'; use Workerman\Worker; $worker = new Worker('http://0.0.0.0:8801'); $worker->count = 4; $worker->onMessage = function($connection, $data){ $connection->send('hello world!'); }; Worker::runAll();
测试结果:

swoole http server:
<?php $worker = new swoole_http_server('0.0.0.0',8801); $worker->set(array('worker_num' => 4)); $worker->on('request', function($request, $response){ $response->end('hello world!'); }); $worker->start();
测试结果:

结果对比:
keep-alive requests | concurrency | time taken | failed requests | write errors | requests per second | time per request | transfer per rate | |
workerman v3.0 | 100000 | 1000 | 13.424s | 0 | 0 | 7450.06 | 134.227ms | 996.74Kbytes/s |
swoole v1.8.0 | 100000 | 1000 | 6.435s | 0 | 0 | 15539.57 | 64.352ms | 2503.95Kbytes/s |