ホームページ  >  記事  >  バックエンド開発  >  PHP CURL メモリ リーク問題の解決策、curl Leak_PHP チュートリアル

PHP CURL メモリ リーク問題の解決策、curl Leak_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:07:031853ブラウズ

PHP CURL メモリ リーク問題の解決策、カール リーク

phpcurl は、privoxy プロキシを使用して https://www.google.com/search?q=xxx

にアクセスします

curl の設定は目立たず、長時間実行するとメモリ リークという重大な問題が見つかりました。シングルスレッドかマルチスレッドかに関係なく、これは避けられません。 curl を使用して https サイトにアクセスするとバグが発生します。
メモリ リークは、Linux の top コマンドを通じて検出できますが、PHP 関数のmemory_get_usage() によっては検出できません。

デバッグを繰り返した結果、問題を解決するために次の項目がcurl設定に追加されました。

コードをコピーします コードは次のとおりです:
[CURLOPT_HTTPPROXYTUNNEL] = true;
[CURLOPT_SSL_VERIFYPEER] = false;
[CURLOPT_SSL_VERIFYHOST] = false;

CURLOPT_HTTPPROXYTUNNEL にはスタックオーバーフローに関する具体的な手順が記載されています。元のテキストを直接投稿してください:

CURLOPT_HTTPPROXYTUNNELなし

CURLOPT_HTTPPROXYTUNNEL を使用しない場合: プロキシ アドレス/ポートを HTTP リクエストの宛先として使用するだけで、プロキシはクエリの HTTP ヘッダーを読み取り、リクエストを (HTTP ヘッダーとともに) 宛先に転送し、応答を書き込みます。 .

手順の例:

1) HTTP GET /index.html を 1.1.1.1 (プロキシ) に送信します

2) 1.1.1.1 リクエストを受信し、HTTP リクエストの最終宛先を取得するためにヘッダーを解析します。
3) 1.1.1.1 クエリとヘッダーを www.site.com (リクエスト ヘッダーの宛先) に転送します。
4) 1.1.1.1 www.site.com から受け取った応答を返信します

CURLOPT_HTTPPROXYTUNNELを使用する場合

CURLOPT_HTTPPROXYTUNNEL の場合: CONNECT HTTP リクエストを実行して、宛先へのダイレクト バイナリ接続 (TCP トンネルと呼ばれる HTTPS など) を直接開くようにプロキシに要求します。トンネルが正常であれば、プロキシは HTTP/1.1 200 を返します。接続が確立されました。受信すると、ブラウザは宛先を直接クエリし始めます。プロキシは HTTP ヘッダーを解析せず、理論的にはトンネル データを読み取らず、ただ転送するだけです。そのため、これがトンネルと呼ばれます。

手順の例:

1) HTTP CONNECT が 1.1.1.1 に送信されました

2) 1.1.1.1 HTTP CONNECT を受信し、最終宛先の IP/ポート (HTTP CONNECT のヘッダー フィールド) を取得します。
3) 1.1.1.1 宛先 2.22.63.73:80 (www.site.com の ip/ポート) への TCP ハンドシェイクを実行して、TCP ソケットを開きます。
4) 1.1.1.1 TCP ソケットを 2.22.63.73:80 に開かれた TCP ソケットにパイプしてトンネルを作成し、返信してください。HTTP/1.1 200 接続が確立されました。これは、クライアントがクエリに TCP トンネルをスローできることを意味します (TCP受信したデータはサーバーに直接送信され、その逆も同様です)。
http://stackoverflow.com/questions/12288956/what-is-the-curl-option-curlopt-httpproxytunnel-means

http://www.bkjia.com/PHPjc/957120.html

tru​​ehttp://www.bkjia.com/PHPjc/957120.html技術記事 PHP CURL のメモリ リーク問題の解決策、カール リーク phpcurl は privoxy プロキシを使用して https://www.google.com/searchq=xxx にアクセスします。curl の設定は目立たず、長時間実行すると重大な問題が見つかります...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。