Сидел сегодня скрипт писал для выкачивания с одного ресурса нескольких сотен страниц, дальше нужно будет вытащить оттуда все остальные страницы, ссылки на которые присутствуют на этих паре сотен страниц, так что количество измеряется несколькими тысячами. Блин, сайт писан грамотным прогером – стоит защита от количества запрашиваемых страниц с IP за единицу времени. Разлок идет по отсылке письма, тоесть просто ввести каптчу не удастся – надо написать собщение через контакт-форму (также присутсвует каптча)…
Выход один – использовать прокси. Так вот постала задача: мне нужно вытащить n-ное количество станиц с этого ресурса с 90-100% результатом (потеря 10% допускается). И вот тут постал вопрос: как контролировать каждый поток мульти CURL’а? Нужно, если прокси умер (а они могут умереть в каждый момент), то брать следующий по списку (алгоритм задать не проблема) и снова грузить страницу, или Если не загрузилась страница (по таймауту или другой причине) тоже снова ее загрузить… Сам алгоритм понятен, но сейчас пытаюсь реализовать это на практике.
Если у кого есть примеры – киньте в меня или ссылку дайте, где про такое можно почитать…
ЗЫ. Про сам Multi CURL не надо. Нужно о контроле этих самых потоков и их обработке.
ЗЫЫ. На мысль пришло: получать результат запроса страницы и если результат пустой или ошибка и т.д., тогда записывать адрес не полученной страницы в новый массив и потом этот массив прогонять как основной и формировать новый “ошибочный” массив. И так до тех пор, пока массив с “ошибочными” адресами не будет пуст.

January 30th, 2008 at 6:54 am
Я тоже помню долго голову ломал над этим вопросом..ответа так и не нашел
February 4th, 2008 at 12:51 pm
там легко могу подарить наработки
February 4th, 2008 at 1:33 pm
Понравился дизайн вашего блога и его статьи! Пишите еще. Подписался на вашу rss-ленту.
С уважением, Василий. Удачи!
February 4th, 2008 at 2:42 pm
2 Herz: если не трудно стукнись ко мне в аську #340-66-00-33
2 Василий: Спасибо, постараюсь оправдать ваш кредит доверия.
February 5th, 2008 at 6:09 am
Herz
а как с вами связаться?
February 4th, 2009 at 2:46 am
Уважаемый Владелец блога, Если решение найдено его просто необходимо тут обнародовать
March 31st, 2009 at 3:15 pm
Тоже интересует ответ на этот вопрос
July 8th, 2009 at 6:35 pm
while (1) {
$buf = $cc->get($url);
if ( preg_match(“/href=\”\/tirerack.css\”/”,$buf) ) {
break;
} else {
$round_index = rand(0, $count_proxy);
$cc->proxy = $proxies[$round_index]['proxy'];
}
}
У меня работает. Страница будет запрашиваться, когда будет выбран работающий прокси. И такая проверка при каждом запросе.