magiq
Новичок
цикл for, нужа помощь
Вопрос по циклам.
Необходимо чтобы когда происходит proxy ошибка, цикл $i повторялся вновь, когда же цикл $i доходит до конца, наращивался цикл $j
Напутал много, не могу разобраться
-~{}~ 09.06.09 01:49:
цикл J перебирает данные, цикл I переберает прокси сервера
-~{}~ 09.06.09 01:51:
В этом
Содержется ответа сервера с ошибкой, необходимо чтобы после ответа наращивался цикл J.
Когда происходят curl ошибки, наращивался цикл I
Когда Ошибок не обнаружено например
цикл J наращивался. То есть прокси сервера меняется только когда curl выводит ошибку.
На $i.'+'.$j - не обращайте внимание, дебаг тул.
Вопрос по циклам.
PHP:
for($j=0;$j<$min;$j++)
{
for($i=0;$i<count($file['proxy']);$i++)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$server); // открываемая страница
curl_setopt($ch, CURLOPT_PROXY, $file['proxy'][$i]); //Берем рандомное прокси
curl_setopt($ch, CURLOPT_TIMEOUT, 20); // сколько времени ждать ответа от сервера
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // вернуть ответ сервера в переменную, а не выводить
curl_setopt($ch,CURLOPT_USERAGENT,$agent);
curl_setopt($ch,CURLOPT_HEADER,1);
// Если не работает proxy - переходим к следующему
if (!$page = curl_exec($ch)) {
$fp= fopen($bad,'a');
fwrite($fp,$file['url'][$j].' : proxy error\n');
fclose($fp);
echo 'Curl error'.$i.'+'.$j;
continue;
}
curl_close($ch);
//Получаем ссылку картинки
$pattern= '/<IMG src="\/cgi-bin\/addsite.cgi\?captcha_picture=(.*)" alt="Случайный текст">/';
preg_match($pattern,$page,$link);
//Затем грабим ID картинки
$pattern= '/http:\/\/id\.rambler\.ru\/captcha\/([^\.]*)/';
preg_match($pattern,$link[1],$id);
//Грабим кукисы страницы
$pattern= '/Set-Cookie: ruid=([^;]*)/';
preg_match($pattern,$page,$ruid);
unset($pattern);
// Сохраняем картинку
saveimg($link[1]);
// Читаем капчу
if (!$text=recognize('img/temp.jpg',"idididas",true)) { continue; }
$string= 'keywords=&submit_endeavoured=Yes&title='.urlencode($file['titles'][$j]).'&url='.urlencode($file['url'][$j]).'&comments='.urlencode($file['descr'][$j]).'&contact='.urlencode($file['names'][$j]).'&email='.urlencode($file['emails'][$j]).'&captcha_request='.urlencode($id[1]).'&captcha_response='.urlencode($text);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$server); // открываемая страница
curl_setopt($ch, CURLOPT_PROXY, $file['proxy'][$i]); //Берем рандомное прокси
curl_setopt($ch, CURLOPT_COOKIE,'ruid='.$ruid[1].'; path=/; domain=.rambler.ru; expires=Thu, 06-Jun-19 17:21:43 GMT');
curl_setopt($ch,CURLOPT_USERAGENT,$agent);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$string);
curl_setopt($ch,CURLOPT_HEADER,1);
if (!$page = curl_exec($ch)) {
$fp= fopen($bad,'a');
fwrite($fp,$file['url'][$i].' : proxy error\n');
fclose($fp);
echo 'Curl error'.$i.'+'.$j;
continue;
}
curl_close($ch); // освободим ресурсы
$pattern='/<font color="#dd0000">(.*)<\/font>/';
if(preg_match($pattern,$page,$matches))
{
$fp= fopen($bad,'a');
fwrite($fp,$file['url'][$i].' :'.$matches[1].'\n');
fclose($fp);
echo $matches[1].$i.'+'.$j;
continue(2);
}
$fp= fopen($succes,'a');
fwrite($fp,$file['url'][$i].'\n');
fclose($fp);
echo 'Succes!!'.$i.'+'.$j;
coninue(2);
}
}
Напутал много, не могу разобраться
-~{}~ 09.06.09 01:49:
цикл J перебирает данные, цикл I переберает прокси сервера
-~{}~ 09.06.09 01:51:
В этом
PHP:
$pattern='/<font color="#dd0000">(.*)<\/font>/';
Когда происходят curl ошибки, наращивался цикл I
Когда Ошибок не обнаружено например
PHP:
echo 'Succes!!'.$i.'+'.$j;
На $i.'+'.$j - не обращайте внимание, дебаг тул.