Я написал обработчик 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);
}