2010-12-21 21 views
4

次のコードはループしています。各ループは、$ URIを新しいアドレスに変更します。 私の問題は、各パスがますます多くのメモリを占有することです。PHP cURL、CURLOPT_RETURNTRANSFER使用時のメモリリーク

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $URI); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
$res = curl_exec($ch); 
curl_close($ch); 

私は最終的に私はCURLOPT_RETURNTRANSFERラインリーク停止をコメントアウトかのことを働きました。

私は "CURLOPT_RETURNTRANSFER、true"を使用するので、解析する文字列としてcURL操作の結果を取得できます。しかし、この文字列を格納するために使用されるメモリは、各パスで解析されないように見えます。 誰もがこのバッファをクリアし、使用されたメモリを回復する方法を提案できますか?私が使用できるデストラクタはありますか?__destruct()を試しましたが、構文を正しく取得できないようです。 PHPの

おかげ C

+1

あなたはphp 5.2またはphp 5.3を使用していますか? php5.3の –

+2

は、関数gc_collect_cycles()を呼び出すことができます。あなたのループのサイクルのすべての量 –

+0

ありがとう。 V 5.1.6。なぜ私はそれほど低い私はそれをちょうど打ち破ったかわからない。 – Columbo

答えて

0

バージョン5.1.6は、文字列としてのcURLの結果を格納する「真CURLOPT_RETURNTRANSFERを、」使用している場合、メモリリークすると問題があるようです。 5.3にアップグレードすると、私のために漏れが分類されました。

ありがとう

+2

あまりにも悪い...私はまだPHPバージョン5.3.8でこの問題を抱えています:-( –

+0

こんにちは、私はまだこの問題に苦しんでいます、あなたはそれのための解決策を得ましたか?私はPHP 5.3.21を実行しています。 –