国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

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

2024-05-04 23:31:18
字體:
供稿:網(wǎng)友
這篇文章主要介紹了PHP CURL 內(nèi)存泄露問題解決方法,CRUL長時間訪問HTTPS網(wǎng)站時有內(nèi)存泄露問題,本文經(jīng)過反復(fù)調(diào)試找到了解決方法,需要的朋友可以參考下
 

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

curl配置平淡無奇,長時間運(yùn)行發(fā)現(xiàn)一個嚴(yán)重問題,內(nèi)存泄露!不論用單線程和多線程都無法避免!是curl訪問https站點(diǎn)的時候有bug!
內(nèi)存泄露可以通過linux的top命令發(fā)現(xiàn),使用php函數(shù)memory_get_usage()不會發(fā)現(xiàn)。

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

 

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

[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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 璧山县| 南溪县| 平和县| 新宾| 阿坝县| 绥化市| 阳江市| 西吉县| 准格尔旗| 平潭县| 东阳市| 淮北市| 呼伦贝尔市| 台中市| 德阳市| 沁源县| 安岳县| 北票市| 凤凰县| 开原市| 旬邑县| 衡南县| 红原县| 锦屏县| 治多县| 定远县| 鄂托克旗| 东丽区| 荔浦县| 竹北市| 加查县| 巴林右旗| 紫阳县| 墨竹工卡县| 大方县| 太仆寺旗| 平远县| 新昌县| 房产| 麟游县| 会理县|