php curl中gzip的压缩性能测试实例分析


Posted in PHP onNovember 08, 2016

本文实例分析了php curl中gzip的压缩性能测试。分享给大家供大家参考,具体如下:

前因:

请求接口次数很多,每日两亿多次,主要是有些接口返回数据量很大高达110KB(为了减少请求次数,将多个接口合并成一个导致的)。

后端接口的nginx已经开启gzip,所以做个测试,看看是否在请求时使用压缩解压

php CURL 的扩展安装这里就不说了

用到的curl的两个参数

//在http 请求头加入 gzip压缩
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept-Encoding:gzip'));
//curl返回的结果,采用gzip解压
curl_setopt($ch, CURLOPT_ENCODING, "gzip");

1、不使用压缩解压

$s1 = microtime(true);
$ch = curl_init();
for($i=0; $i<100;$i++){
  $url="http://192.168.0.11:8080/xxxxx/xxxxx?";
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_TIMEOUT, 3);
  $data = curl_exec($ch);
}
curl_close($ch);
echo microtime(true)-$s1;
echo "\n";

测试结果:

请求100次平均耗时 2.1s   0.021s/次

2、使用压缩解压

$s1 = microtime(true);
$ch = curl_init();
for($i=0; $i<100;$i++){
  $url="http://192.168.0.1:8080/xxxxx/xxxxx?";
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_TIMEOUT, 3);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept-Encoding:gzip'));
  curl_setopt($ch, CURLOPT_ENCODING, "gzip");
  $data = curl_exec($ch);
}
curl_close($ch);
echo microtime(true)-$s1;
echo "\n";

测试结果:

请求100次平均耗时 2.6s   0.026/次

结果分析:

1、不使用压缩比使用压缩 请求一次快 5ms

2、千兆网,在局域网内传输这些数据大概是 0.7ms

结论:

暂时不使用 curl 的压缩和解压

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
Apache设置虚拟WEB
Oct 09 PHP
php中cookie的作用域
Mar 27 PHP
php URL编码解码函数代码
Mar 10 PHP
PHP设计模式之装饰者模式代码实例
May 11 PHP
Thinkphp实现自动验证和自动完成
Dec 19 PHP
php、java、android、ios通用的3des方法(推荐)
Sep 09 PHP
PHP反射机制原理与用法详解
Feb 15 PHP
如何利用预加载优化Laravel Model查询详解
Aug 11 PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
PHP MVC框架中类的自动加载机制实例分析
Sep 18 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
Apr 04 PHP
php执行多个存储过程的方法【基于thinkPHP】
Nov 08 #PHP
php实现的http请求封装示例
Nov 08 #PHP
PHP实现原生态图片上传封装类方法
Nov 08 #PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
Nov 07 #PHP
Yii2框架BootStrap样式的深入理解
Nov 07 #PHP
php 时间time与日期date之间的使用详解及区别
Nov 07 #PHP
php 微信公众平台开发模式实现多客服的实例代码
Nov 07 #PHP
You might like
PHP计算加权平均数的方法
2015/07/16 PHP
php支付宝在线支付接口开发教程
2016/09/19 PHP
php面向对象的用户登录身份验证
2017/06/08 PHP
基于php数组中的索引数组和关联数组详解
2018/03/12 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
仿微博字符限制效果实现代码
2012/04/20 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
2015/04/13 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
纯JS代码实现一键分享功能
2016/04/20 Javascript
JS中作用域和变量提升(hoisting)的深入理解
2016/10/31 Javascript
WebStorm ES6 语法支持设置&amp;babel使用及自动编译(详解)
2017/09/08 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
基于element-ui的rules中正则表达式
2018/09/04 Javascript
微信小程序提交form操作示例
2018/12/30 Javascript
关于React动态加载路由处理的相关问题
2019/01/07 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
详解javascript中var与ES6规范中let、const区别与用法
2020/01/11 Javascript
一则python3的简单爬虫代码
2014/05/26 Python
python实现web方式logview的方法
2015/08/10 Python
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
Python查找最长不包含重复字符的子字符串算法示例
2019/02/13 Python
python三方库之requests的快速上手
2019/03/04 Python
详解python算法之冒泡排序
2019/03/05 Python
快速解决jupyter启动卡死的问题
2020/04/10 Python
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
英国乐购杂货:Tesco Groceries
2018/11/29 全球购物
eHarmony英国:全球领先的认真恋爱约会平台之一
2020/11/16 全球购物
商场中秋节广播稿
2014/01/17 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
教师节促销活动方案
2014/02/14 职场文书
正科级干部考察材料
2014/05/29 职场文书
保险公司演讲稿
2014/09/02 职场文书
Nebula Graph解决风控业务实践
2022/03/31 MySQL