PHP CURL внутри пока производительность цикла - PullRequest
1 голос
/ 17 апреля 2011

Я написал обработчик CURL, который вызывается внутри цикла WHILE. После выполнения каждого exec CURL я освобождаю ресурсы объекта, устанавливая обработчик CURL в NULL. Но даже после очистки запроса, я получаю странную ошибку после выполнения вызовов 80K, как,

Неустранимая ошибка: допустимый объем памяти 134217728 байт исчерпаны (пытались выделить 13471 байт)

А также, я хочу знать, предположим, что если запрос CURL выдает ошибку тайм-аута, будет ли эта ошибка кэшироваться внутри цикла? Почему я спрашиваю, я пытаюсь выполнить вызов API с помощью обработчика CURL. Если вызовы API завершаются неудачно в первый раз, он завершается неудачей навсегда, даже если он выполняется несколько раз.

Например: я пытаюсь вызвать API поиска в Facebook, и он возвращает ошибку вроде

Время соединения () истекло!

После выполнения в первый раз, если я пытаюсь запустить в следующий раз или дольше, чем когда-либо, снова возвращается та же ошибка.

Итак, кто-нибудь может помочь мне выбраться из этого.

ПРИМЕЧАНИЕ:

  • У меня есть идея использовать 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...