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 相关文章推荐
如何去掉文章里的 html 语法
Oct 09 PHP
以文本方式上传二进制文件的PHP程序
Oct 09 PHP
用php过滤危险html代码的函数
Jul 22 PHP
PHP 文件上传源码分析(RFC1867)
Oct 30 PHP
一步一步学习PHP(7) php 字符串相关应用
Mar 05 PHP
PHP与MySQL开发的8个技巧小结
Dec 17 PHP
PHP调用Webservice实例代码
Jul 29 PHP
php 记录进行累加并显示总时长为秒的结果
Nov 04 PHP
解析php防止form重复提交的方法
Jul 01 PHP
PHP+MySQL实现无极限分类栏目的方法
Dec 23 PHP
详解yii2使用多个数据库的案例
Jun 16 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 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中理解print EOT分界符和echo EOT的用法区别小结
2010/02/21 PHP
php页面缓存ob系列函数介绍
2012/10/18 PHP
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
PHP的基本常识小结
2013/07/05 PHP
php将字符串全部转换成大写或者小写的方法
2015/03/17 PHP
Symfony模板的快捷变量用法实例
2016/03/17 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
PHP代码加密的方法总结
2020/03/13 PHP
javascript 写类方式之六
2009/07/05 Javascript
prototype 学习笔记整理
2009/07/17 Javascript
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
原生javascript和jquery判断浏览器版本等信息
2013/07/04 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
2016/08/10 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
2016/09/13 Javascript
js Canvas实现的日历时钟案例分享
2016/12/25 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
举例讲解Python中的迭代器、生成器与列表解析用法
2016/03/20 Python
python将txt文件读入为np.array的方法
2018/10/30 Python
简单了解python代码优化小技巧
2019/07/08 Python
Python中包的用法及安装
2020/02/11 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
基于opencv实现简单画板功能
2020/08/02 Python
使用python实现学生信息管理系统
2021/02/25 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
C# .NET面试题
2015/11/28 面试题
软件设计的目标是什么
2016/12/04 面试题
药店主任岗位责任制
2014/02/10 职场文书
奠基仪式主持词
2014/03/20 职场文书
主题党日活动总结
2014/07/08 职场文书
辛德勒的名单观后感
2015/06/03 职场文书
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers
python字符串常规操作大全
2021/05/02 Python
Vue h函数的使用详解
2022/02/18 Vue.js