easySwoole
easySwoole专为API而生,是一款常驻内存化的PHP开发框架,摆脱传统PHP运行模式在进程唤起和文件加载上带来的性能损失,自带服务器功能,无需依赖Apache或Nginx运行。在web服务器模式下,支持多层级(组模式)控制器访问与多种事件回调,高度封装了Swool Server 而依旧维持Swoole Server 原有特性,支持在 Server 中监听自定义的TCP、UDP协议,让开发者可以最低的学习成本和精力,编写出多进程,可定时,可异步,高可用的应用服务。
本项目基于easyPHP与Swoole拓展实现:
- easyPHP https://github.com/kiss291323003/easyPHP
- Swoole http://www.swoole.com/
特性:
维持了 Swoole Server 中的全部特性:
- 强大的 TCP/UDP Server 框架,多线程,EventLoop,事件驱动,异步,Worker进程组,Task异步任务,毫秒定时器,SSL/TLS隧道加密
- EventLoop API,让用户可以直接操作底层的事件循环,将socket,stream,管道等Linux文件加入到事件循环中。
维持了easyPHP中的全部特性:
- 高度全局化请求对象与响应对象封装,方便二次开发。
- 支持快速路由,请求拦截,多种事件回调,容器托管服务。
优势:
- 简单易用开发效率高
- 并发百万TCP连接
- TCP/UDP/UnixSock
- 支持异步/同步/协程
- 支持多进程/多线程
- CPU亲和性/守护进程
关于ab基准测试:
- 系统: CentOS 7.1 桌面版
- CPU: i5 6500
- 内存: 8G
- php: 5.6.30
- Swoole: 1.8.13-stable
- 测试代码: Index控制器中输出"hello world"并发送header "X-Server"=>""easyPHP"
- ab -c 500 -n 500000 http://127.0.0.1:9501/ 测试结果如下
Server Software: easyPHP
Server Hostname: 127.0.0.1
Server Port: 9501
Document Path: /
Document Length: 20 bytes
Concurrency Level: 500
Time taken for tests: 30.268 seconds
Complete requests: 500000
Failed requests: 0
Write errors: 0
Total transferred: 97500000 bytes
HTML transferred: 10000000 bytes
Requests per second: 16519.16 [#/sec] (mean)
Time per request: 30.268 [ms] (mean)
Time per request: 0.061 [ms] (mean, across all concurrent requests)
Transfer rate: 3145.74 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 15 1.0 15 25
Processing: 2 15 1.3 15 37
Waiting: 1 12 2.0 12 31
Total: 17 30 1.2 30 52
Percentage of the requests served within a certain time (ms)
50% 30
66% 30
75% 31
80% 31
90% 31
95% 31
98% 33
99% 34
100% 52 (longest request)