PHP CURL里面的循环性能

时间:2011-04-17 04:49:02

标签: php curl

我编写了一个在WHILE循环中调用的CURL处理程序。在执行每个CURL exec之后,我通过将CURL处理程序设置为NULL来释放对象资源。但即使在清理了请求之后,我在执行80K调用之后也遇到了一个奇怪的错误,如

  

致命错误:允许的内存大小为   耗尽134217728个字节(试过   分配13471个字节)

而且,我想知道,假设如果CURL请求抛出超时错误,错误是否会缓存在循环内?为什么我要问的是,我正在尝试使用CURL处理程序执行API调用。如果API调用第一次失败,即使多次执行它也会永远失败。

例如:我要调用facebook搜索API并返回错误,如

  

connect()超时!

第一次执行后,如果我尝试下次或多次运行,再次返回相同的错误。

所以,任何人都可以帮助我解决这个问题。

注意:

  • 我有个想法 CURL_MULTI_EXEC,但之前 实施我需要一些建议 来自更多人喜欢,如何处理 以上两种情况以及如何管理 CURL对象资源。
  • 如何清理缓存 CURL?

这是我的代码,

while(true) {
    $curlObj =  triggerCurl($serachUrl);
    return $curlObj;
}


function triggerCurl($url) {
    $url = $url;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    // Set the default options
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
    $ret = curl_exec($ch);
    curl_close($ch);
    unset($ch);
}

0 个答案:

没有答案