PHP CURL在while循环中的性能

PHP CURL在while循环中的性能,php,curl,Php,Curl,我已经编写了一个在WHILE循环中调用的CURL处理程序。在执行每个CURL exec之后,我通过将CURL处理程序设置为NULL来释放对象资源。但是,即使在清理了请求之后,我在执行80K调用后也会遇到一个奇怪的错误,比如 致命错误:允许的内存大小为 134217728字节已用尽(已尝试 分配13471字节) 另外,我想知道,假设一个CURL请求抛出一个超时错误,那么这个错误会被缓存在循环中吗?。我问的原因是,我正在尝试使用CURL处理程序执行一个API调用。如果API调用第一次失败,即使执行多

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

致命错误:允许的内存大小为 134217728字节已用尽(已尝试 分配13471字节)

另外,我想知道,假设一个CURL请求抛出一个超时错误,那么这个错误会被缓存在循环中吗?。我问的原因是,我正在尝试使用CURL处理程序执行一个API调用。如果API调用第一次失败,即使执行多次,它也会永远失败

我尝试调用一个facebook搜索API,它返回一个错误,比如

connect()超时

在第一次执行之后,如果我尝试下一次或更多时间运行,它会再次返回相同的错误

那么,谁能帮我摆脱这个困境呢

注意:

  • 我有个主意要用 CURL\u MULTI\u EXEC,但在 我需要一些建议 从更多的人喜欢,如何处理 以上两种情况及如何管理 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);
}

你确定这是你内存不足的原因吗?您是否在每次迭代中存储数据?FaceookAPI上的点击量为80k?听起来像是一个可怕的铲运机。@Marc:这不是facebook的8万次呼叫。它还包括太多其他API调用,更重要的是,API调用是以基于时间的方式执行的。这是三天的总计数。