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中批量删除Mysql中相同前缀的数据表的代码
Jul 01 PHP
php中获得视频时间总长度的另一种方法
Sep 15 PHP
基于php验证码函数的使用示例
May 03 PHP
php多个字符串替换成同一个的解决方法
Jun 18 PHP
php单例模式示例分享
Feb 12 PHP
php动态生成版权所有信息的方法
Mar 24 PHP
提交表单后 PHP获取提交内容的实现方法
May 25 PHP
php实现压缩合并js的方法【附demo源码下载】
Sep 22 PHP
PHP中file_put_contents追加和换行的实现方法
Apr 01 PHP
php删除二维数组中的重复值方法
Mar 12 PHP
关于php unset对json_encode的影响详解
Nov 14 PHP
Laravel Validator自定义错误返回提示消息并在前端展示
May 09 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
图书管理程序(三)
2006/10/09 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
2014/11/18 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
摘自百度的图片轮换效果代码
2007/11/19 Javascript
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
javascript new fun的执行过程
2010/08/05 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
基于JavaScript实现轮播图代码
2016/07/14 Javascript
微信小程序  wx.request合法域名配置详解
2016/11/23 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
jsonp跨域请求详解
2017/07/13 Javascript
全面介绍vue 全家桶和项目实例
2017/12/27 Javascript
JavaScript中的高级函数
2018/01/04 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
详解Node.js使用token进行认证的简单示例
2020/05/25 Javascript
Python的词法分析与语法分析
2013/05/18 Python
python中MySQLdb模块用法实例
2014/11/10 Python
python3.5使用tkinter制作记事本
2016/06/20 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
django-利用session机制实现唯一登录的例子
2020/03/16 Python
python实现二分类和多分类的ROC曲线教程
2020/06/15 Python
简单的Python人脸识别系统
2020/07/14 Python
英国花园药房: The Garden Pharmacy
2017/12/28 全球购物
全球最大的游戏市场:G2A
2018/07/05 全球购物
自我鉴定书
2014/03/24 职场文书
入股协议书范本
2014/04/14 职场文书
学校食堂食品安全承诺书
2015/04/29 职场文书
大学学生会竞选稿
2015/11/19 职场文书
社区宣传标语口号
2015/12/26 职场文书
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL