PHP 界的 HTTP 客户端性能测试
参与测试的分别是:Guzzle、Saber 以及 YurunHttp
Guzzle 是老牌 PHP HTTP 客户端,许多国内外的 SDK 都用它来封装。
但 Guzzle 对 Swoole 毫不兼容,很多 Swoole 用户为此感到十分头疼。
Guzzle-Swoole 解决方案:https://github.com/Yurunsoft/Guzzle-Swoole
项目地址:https://github.com/guzzle/guzzle
Saber 是目前 Swoole 二号大佬 Twosee 开发的 PHP 高性能 HTTP 客户端, 基于 Swoole 原生协程
项目地址:https://github.com/swlib/saber
YurunHttp 是由宇润开源的 PHP HTTP 类库,支持链式操作,简单易用。
支持所有常见的 GET、POST、PUT、DELETE、UPDATE 等请求方式,支持 Http2、WebSocket、浏览器级别 Cookies 管理、上传下载、设置和读取 header、Cookie、请求参数、失败重试、限速、代理、证书等。
支持 Curl 和 Swoole 环境智能识别兼容。
项目地址:https://github.com/Yurunsoft/YurunHttp
文件 test-server/server
是今天测试用的服务端,它是一个 Go 的 hello world 服务器
不用 php-fpm 和 Swoole 是为了避免有人说,Swoole 客户端对 Swoole 写的服务端有迷之加成
所以采用了 PHP 公敌 Go 语言开发的服务器
test-server/server.go
是源代码,你也可以自行编译
测试分为两类
循环请求 1W 次
并发请求 1W 次
由于 YurunHttp 支持 Curl 和 Swoole
所以会分别有 Curl 和 Swoole 的循环、并发测试
腾讯云,4核,4G 内存
Debian 版本: 8.6
Linux 版本: 3.16
PHP 版本: 7.1.33
php-curl 版本: 7.38.0
Swoole 版本: 4.4.16
启动服务器:./test-server/server
启动测试:./run-test.sh
---single---
guzzle:
Use time: 2.7100119590759s
success:10000, fail: 0
saber:
Use time: 2.7702579498291s
success:10000, fail: 0
yurunhttp-swoole:
Use time: 1.6949279308319s
success:10000, fail: 0
yurunhttp-curl:
Use time: 2.0800280570984s
success:10000, fail: 0
---batch---
guzzle-batch:
Use time: 7.3922648429871s
success:10000, fail: 0
saber-batch:
Use time: 1.4752199649811s
success:10000, fail: 0
yurunhttp-curl-batch:
Use time: 3.2565279006958s
success:10000, fail: 0
yurunhttp-swoole-batch:
Use time: 1.2161870002747s
success:10000, fail: 0
排行 | 名称 | 时间(单位:秒) | 环境 |
---|---|---|---|
1 | yurunhttp-swoole | 1.69s | Swoole |
2 | yurunhttp-curl | 2.08s | Curl |
3 | guzzle | 2.71s | Curl |
4 | saber | 2.77s | Swoole |
排行 | 名称 | 时间(单位:秒) | 环境 |
---|---|---|---|
1 | yurunhttp-swoole | 1.21s | Swoole |
2 | saber | 1.47s | Swoole |
3 | yurunhttp-curl | 3.25s | Curl |
4 | guzzle | 7.39s | Curl |