我有这个函数,可以从页面列表中获取 html,一旦我运行它 两个小时左右,脚本中断并显示已超出内存限制, 现在我尝试取消设置/设置为空一些变量希望释放一些内存 但这是同样的问题。你们能看一下下面的一段吗 代码? :
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
if ($proxystatus == 'on'){
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
}
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_URL, $site);
ob_start();
return curl_exec($ch); // the line the script interrupts because of memory
ob_end_clean();
curl_close($ch);
ob_flush();
$site = null;
$ch = null;
}
任何建议都将受到高度赞赏。我已经将内存限制设置为128M,但是之前 增加它(对我来说似乎不是最好的选择)我想知道是否有 在运行脚本时我可以做任何事情来使用更少的内存/释放内存。
谢谢。
最佳答案
你确实在泄漏内存。请记住,return
会立即结束当前函数的执行,因此永远不会调用所有清理操作(最重要的是 ob_end_clean()
和 curl_close()
) .
return
应该是函数执行的最后一件事。
关于phpcurl内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14687264/