PHP CURL 內(nèi)存泄露問題解決方法_PHP教程
推薦:PHP中捕獲超時事件的方法實例這篇文章主要介紹了PHP中捕獲超時事件的方法實例,本文直接給出示例代碼,需要的朋友可以參考下 set_error_handler()不能捕獲致命錯誤(具體錯誤類型見手冊)。 所以需要如下方法: ? 注意:sleep()停頓時間不算在max_execution_time中。
這篇文章主要介紹了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配置平淡無奇,長時間運行發(fā)現(xiàn)一個嚴重問題,內(nèi)存泄露!不論用單線程和多線程都無法避免!是curl訪問https站點的時候有bug!
內(nèi)存泄露可以通過linux的top命令發(fā)現(xiàn),使用php函數(shù)memory_get_usage()不會發(fā)現(xiàn)。
經(jīng)過反復(fù)調(diào)試找到解決辦法,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單例模式的示例,設(shè)計模式這些的花點心思基本的是能夠理解的,當然要想很好的運用到項目上也是需要一定的實踐,不能只是知道了解,或者說的是很厲害很懂的,一到要實際操作就不行了,廢話就不多說了 單例模式主要使用于數(shù)據(jù)庫的連接, 確保數(shù)
- PHP中捕獲超時事件的方法實例
- php單例模式示例分享
- PHP 正則表達式小結(jié)
- php使用iconv中文截斷問題的解決方法
- php+Mysqli利用事務(wù)處理轉(zhuǎn)賬問題實例
- php中使用url傳遞數(shù)組的方法
- php使用類繼承解決代碼重復(fù)的問題
- php實現(xiàn)parent調(diào)用父類的構(gòu)造方法與被覆寫的方法
- PHP獲取數(shù)組長度或某個值出現(xiàn)次數(shù)的方法
- php發(fā)送與接收流文件的方法
- php實現(xiàn)上傳圖片保存到數(shù)據(jù)庫的方法
- php+html5使用FormData對象提交表單及上傳圖片的方法
- 相關(guān)鏈接:
- 教程說明:
PHP教程-PHP CURL 內(nèi)存泄露問題解決方法
。