av手机免费在线观看,国产女人在线视频,国产xxxx免费,捆绑调教一二三区,97影院最新理论片,色之久久综合,国产精品日韩欧美一区二区三区

PHP

PHP CURL內(nèi)存泄露的解決方法

時(shí)間:2024-09-09 12:27:57 PHP 我要投稿
  • 相關(guān)推薦

PHP CURL內(nèi)存泄露的解決方法

  curl配置平淡無(wú)奇,長(zhǎng)時(shí)間運(yùn)行發(fā)現(xiàn)一個(gè)嚴(yán)重問(wèn)題,內(nèi)存泄露!不論用單線程和多線程都無(wú)法避免!是curl訪問(wèn)https站點(diǎn)的時(shí)候有bug!

  內(nèi)存泄露可以通過(guò)linux的top命令發(fā)現(xiàn),使用php函數(shù)memory_get_usage()不會(huì)發(fā)現(xiàn)。

  經(jīng)過(guò)反復(fù)調(diào)試找到解決辦法,curl配置添加如下幾項(xiàng)解決問(wèn)題:

  復(fù)制代碼 代碼如下:

  [CURLOPT_HTTPPROXYTUNNEL] = true;

  [CURLOPT_SSL_VERIFYPEER] = false;

  [CURLOPT_SSL_VERIFYHOST] = false;

  CURLOPT_HTTPPROXYTUNNEL具體說(shuō)明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 / 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).

【PHP CURL內(nèi)存泄露的解決方法】相關(guān)文章:

內(nèi)存故障排除方法07-16

內(nèi)存故障處理步驟07-16

php實(shí)習(xí)心得12-01

php實(shí)習(xí)報(bào)告11-07

php工作總結(jié)11-11

php是什么格式?01-14

PHP Socket編程過(guò)程02-09

php開發(fā)主管的職責(zé)05-15

內(nèi)存插槽損壞引發(fā)啟動(dòng)故障07-16

內(nèi)存故障有什么處理方法07-16