2010-12-21 176 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,真”,所以我可以得到cURL操作的结果作为字符串解析。但是,似乎用于存储此字符串的内存不会在每次传递时分析。 任何人都可以建议一种方法来清除此缓冲区并恢复使用的内存?有没有我可以使用的析构函数,我试过__destruct(),但似乎无法获得正确的语法。

感谢 Ç

+1

您使用的是PHP 5.2或PHP 5.3? – 2010-12-21 11:56:27

+2

在php5.3中可以调用函数gc_collect_cycles();你的循环中的每一个循环量 – 2010-12-21 11:57:53

+0

谢谢。 V 5.1.6。不知道为什么它如此之低,我只是简单地把它丢弃了。 – Columbo 2010-12-21 12:06:51

回答

0

版本PHP 5.1.6似乎与内存泄漏问题当使用“CURLOPT_RETURNTRANSFER,真”来存储卷曲作为一个字符串的结果。 升级到5.3为我排序泄漏。

谢谢

+2

太糟糕了...我仍然有这个问题与PHP版本5.3.8 :-( – 2012-11-08 10:31:58

+0

嗨,我仍然遭受这个问题,你有没有得到任何解决方案??我运行PHP 5.3.21。 – 2014-04-10 07:35:30

相关问题