1. 云栖社区>
  2. 技术文集>
  3. 列表>
  4. 正文

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

作者:用户 来源:互联网 时间:2016-02-13 09:19:15

内存http内存泄露requesthttp tcpproxyphpcurlssl handshakeHeadersThe

PHP CURL 内存泄露问题解决方法 - 摘要: 本文讲的是PHP CURL 内存泄露问题解决方法,   这篇文章主要介绍了PHP CURL 内存泄露问题解决方法,CRUL长时间访问HTTPS网站时有内存泄露问题,本文经过反复调试找到了解决方法,需要的朋友可以参考下   phpcurl使用p

  这篇文章主要介绍了PHP CURL 内存泄露问题解决方法,CRUL长时间访问HTTPS网站时有内存泄露问题,本文经过反复调试找到了解决方法,需要的朋友可以参考下

  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

 

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有 的相关内容,欢迎继续使用右上角搜索按钮进行搜索内存 , http , 内存泄露 , request , http tcp , proxy , phpcurl , ssl handshake , Headers The php curl 内存泄露、libcurl 内存泄露、curl 内存泄露、php curl如何解决分页、handler内存泄露解决,以便于您获取更多的相关知识。

windows-curl无法开启的原因有哪些?网上的方法都试过了,不管用

问题描述 curl无法开启的原因有哪些?网上的方法都试过了,不管用 最近apache和php又有更新,手贱直接下来安装了,结果发现curl仅仅显示了作者的名称,其他一概不显示。网上的复制libeay等...

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

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

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

  这篇文章主要介绍了PHP CURL 内存泄露问题解决方法,CRUL长时间访问HTTPS网站时有内存泄露问题,本文经过反复调试找到了解决方法,需要的朋友可以参考下   phpcurl使用privoxy代理访问https://www.google.com/search?q=xxx   curl配置平...

PHP V5.2 中的新增功能,第 1 部分: 使用新的内存管理器

2007 年 4 月 10 日 了解如何使用 PHP V5.2 中引入的新内存管理器并开始精通于跟踪和监视内存使用情况。这将使您可以在 PHP V5.2 中更加有效地使用更多的内存。 PHP V5.2:开始 2006 年 11 月发布了 PHP V5.2,它包括许多新增功能和错...

《Node.js实战》学习笔记

...一个输入框和一个提交按钮,后台我把数据一次全都读到内存,连数据库也没有。虽然还谈不上入门,但感觉有了学习的兴趣,所以决定从头看一遍这本书。 Day 1:玩物不丧志另一个契机是最近刚买了一个机械键盘,爱不释手,...

前三篇
后三篇