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 相关文章推荐
Zend引擎的发展 [15]
Oct 09 PHP
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
Sep 02 PHP
PHP mkdir()定义和用法
Jan 14 PHP
Godaddy空间Zend Optimizer升级方法
May 10 PHP
sphinx增量索引的一个问题
Jun 14 PHP
PHP 图片上传代码
Sep 13 PHP
利用php绘制饼状图的实现代码
Jun 07 PHP
yii操作session实例简介
Jul 31 PHP
php eval函数一句话木马代码
May 21 PHP
让你的PHP7更快之Hugepage用法分析
May 31 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
Laravel 简单实现Ajax滚动加载示例
Oct 22 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下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
PHP动态规划解决0-1背包问题实例分析
2015/03/23 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
2019/06/14 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
Javascript实现字数统计
2015/07/03 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
Angular2学习教程之组件中的DOM操作详解
2017/05/28 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
2017/06/27 Javascript
实例详解带参数的 npm script
2019/05/28 Javascript
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
Python 最强编辑器详细使用指南(PyCharm )
2019/09/16 Python
Python实现FLV视频拼接功能
2020/01/21 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
PHP面试题大全
2015/10/16 面试题
如何开启linux的ssh服务
2013/06/03 面试题
Ruby如何创建一个线程
2013/03/10 面试题
四下基层实施方案
2014/03/28 职场文书
车贷收入证明范本
2014/09/14 职场文书
小组口号霸气押韵
2015/12/24 职场文书
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL
Python 数据科学 Matplotlib图库详解
2021/07/07 Python
python运算符之与用户交互
2022/04/13 Python