У меня есть функция cURL, которая отслеживает все веб-страницы, указанные в массиве. Массив называется $ to_be_spidered, у меня функция выполняется так:
$to_be_spidered = array('http://google.com', 'http://mysterysite.com', 'http://yahoo.com');
for ($i = 0; $i != count($to_be_spidered); $i++) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_TIMEOUT, 0); // set cURL timeout
$html= curl_exec($ch);
// error handling
if (!$html) {
echo "<br />cURL error number:" .curl_errno($ch);
echo "<br />cURL error:" . curl_error($ch);
exit;
}
// etc. etc...
}
Теперь проблема в том, что если веб-страница возвращает ошибку, например 404, сценарий уничтожается. Например, если mysterysite.com не найден, скрипт не пытается сделать паук yahoo.com. Это просто выходит из этого и все ссылки после.
Я бы хотел, чтобы он прекратил попытки найти ссылку на ошибку и перейти к следующей ссылке в очереди. Я попытался изменить «выход» на «продолжить», но безуспешно. Это все еще останавливается. Я делаю что-то не так или это специфично для использования cURL?