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 相关文章推荐
用PHP生成静态HTML速度快类库
Mar 18 PHP
PHP实现时间轴函数代码
Oct 08 PHP
php图片的裁剪与缩放生成符合需求的缩略图
Jan 11 PHP
基于Discuz security.inc.php代码的深入分析
Jun 03 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
Jun 17 PHP
PHP实现的简单日历类
Nov 29 PHP
Symfony2学习笔记之系统路由详解
Mar 17 PHP
Zend Framework实现自定义过滤器的方法
Dec 09 PHP
PHP 中使用explode()函数切割字符串为数组的示例
May 06 PHP
学习thinkphp5.0验证类使用方法
Nov 16 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
Mar 30 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
Sep 13 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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
PHP 字符串 小常识
2009/06/05 PHP
求PHP数组最大值,最小值的代码
2011/10/31 PHP
PHP获取服务器端信息的方法
2014/11/28 PHP
PHP的邮件群发系统phplist配置方法详细总结
2016/03/30 PHP
php中让人头疼的浮点数运算分析
2016/10/10 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
根据出生日期自动取得星座的js代码
2010/07/20 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
JS滚轮事件onmousewheel使用介绍
2013/11/01 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
js实现日历的简单算法
2017/01/24 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
Python enumerate函数功能与用法示例
2019/03/01 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
利用PyCharm Profile分析异步爬虫效率详解
2019/05/08 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
OpenCV利用python来实现图像的直方图均衡化
2020/10/21 Python
Django缓存Cache使用详解
2020/11/30 Python
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
化工专业推荐信范文
2013/11/28 职场文书
年度评优评先方案
2014/06/03 职场文书
中秋晚会策划方案
2014/06/12 职场文书
施工安全员岗位职责
2015/04/11 职场文书
2015年社区党务工作总结
2015/04/21 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
Python数据分析之绘图和可视化详解
2021/06/02 Python
JavaScript原型链详解
2021/11/07 Javascript
疑《守望先锋2》A测截图泄露 或将推出新模式、新界面
2022/04/03 其他游戏
解决 Redis 秒杀超卖场景的高并发
2022/04/12 Redis