PHP CURL 内存泄露问题解决方法


Posted in PHP onFebruary 12, 2015

phpcurl使用privoxy代理访问https://www.google.com/search?q=xxx

curl配置平淡无奇,长时间运行发现一个严重问题,内存泄露!不论用单线程和多线程都无法避免!是curl访问https站点的时候有bug!
内存泄露可以通过linux的top命令发现,使用php函数memory_get_usage()不会发现。

经过反复调试找到解决办法,curl配置添加如下几项解决问题:

[CURLOPT_HTTPPROXYTUNNEL] = true;

[CURLOPT_SSL_VERIFYPEER] = false;

[CURLOPT_SSL_VERIFYHOST] = false;

CURLOPT_HTTPPROXYTUNNEL具体说明stackoverflow上有,直接贴原文:

Without CURLOPT_HTTPPROXYTUNNEL

Without CURLOPT_HTTPPROXYTUNNEL : You just use the proxy address/port as a destination of your HTTP request. The proxy will read the HTTP headers of your query, forward your request to the destination (with your HTTP headers) and then write the response to you.

Example steps :

1)HTTP GET /index.html sent to 1.1.1.1 (proxy)
2)1.1.1.1 receive request and parse header for getting the final destination of your HTTP request.
3)1.1.1.1 forward your query and headers to www.site.com (destination in request headers).
4)1.1.1.1 write back to you the response receive from www.site.com

With CURLOPT_HTTPPROXYTUNNEL

With CURLOPT_HTTPPROXYTUNNEL : You ask the proxy to open a direct binary connection (like HTTPS, called a TCP Tunnel) directly to your destination by doing a CONNECT HTTP request. When the tunnel is ok, the proxy write you back a HTTP/1.1 200 Connection established. When it received your browser start to query the destination directly : The proxy does not parse HTTP headers and theoretically does not read tunnel datas, it just forward it, thats why it is called a tunnel !

Example steps :

1)HTTP CONNECT sent to 1.1.1.1
2)1.1.1.1 receive HTTP CONNECT and get the ip/port of your final destination (header field of HTTP CONNECT).
3)1.1.1.1 open a TCP Socket by doing a TCP handshake to your destination 2.22.63.73:80 (ip/port of www.site.com).
4)1.1.1.1 Make a tunnel by piping your TCP Socket to the TCP Socket opened to 2.22.63.73:80and then write you back HTTP/1.1 200 Connection established witch means that your client can now make your query throw the TCP Tunnel (TCP datas received will be transmited directly to server and vice versa).

http://stackoverflow.com/questions/12288956/what-is-the-curl-option-curlopt-httpproxytunnel-means

PHP 相关文章推荐
php array_intersect()函数使用代码
Jan 14 PHP
跟我学Laravel之路由
Oct 15 PHP
ThinkPHP处理Ajax返回的方法
Nov 22 PHP
PHP下载远程文件到本地存储的方法
Mar 24 PHP
PHP常用工具类大全附全部代码下载
Dec 07 PHP
PHP学习笔记之php文件操作
Jun 03 PHP
thinkphp中AJAX返回ajaxReturn()方法分析
Dec 06 PHP
CI(CodeIgniter)框架视图中加载视图的方法
Mar 24 PHP
PHP异步进程助手async-helper
Feb 05 PHP
Phpstorm+Xdebug断点调试PHP的方法
May 14 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 PHP
使用Git实现Laravel项目的自动化部署
Nov 24 PHP
PHP中捕获超时事件的方法实例
Feb 12 #PHP
php单例模式示例分享
Feb 12 #PHP
PHP 正则表达式小结
Feb 12 #PHP
一个非常完美的读写ini格式的PHP配置类分享
Feb 12 #PHP
PHP动态输出JavaScript代码实例
Feb 12 #PHP
PHP使用JSON和将json还原成数组
Feb 12 #PHP
服务器上配置PHP运行环境教程
Feb 12 #PHP
You might like
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
PHP中的函数嵌套层数限制分析
2011/06/13 PHP
php 目录遍历、删除 函数的使用介绍
2013/04/28 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
jquery采用oop模式class类的使用示例
2016/01/22 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
2017/10/19 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
angular2中Http请求原理与用法详解
2018/01/11 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
2019/08/01 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
跟老齐学Python之有点简约的元组
2014/09/24 Python
python实现输入数字的连续加减方法
2018/06/22 Python
Python判断以什么结尾以什么开头的实例
2018/10/27 Python
使用PYTHON解析Wireshark的PCAP文件方法
2019/07/23 Python
python 公共方法汇总解析
2019/09/16 Python
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
维也纳通行证:Vienna PASS
2019/07/18 全球购物
英国高街奥特莱斯:Highstreet Outlet
2019/11/21 全球购物
ORLY官网:美国专业美甲一线品牌
2019/12/11 全球购物
应届生法律求职信
2013/10/22 职场文书
英文演讲稿开场白
2014/08/25 职场文书
学习党章的体会
2014/11/07 职场文书
全陪导游词
2015/02/04 职场文书
小学新教师个人总结
2015/02/05 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang