powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / cURL в цикле
7 сообщений из 7, страница 1 из 1
cURL в цикле
    #38871727
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, запускаю в цикле cURL на 20-25 цикле из 40 останавливается, пробовал повышать таймаут cURL, не решило проблему. Так же ставил задержку цикла, то же самое. Целый день убил не понимаю.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
        $url = "http:/site...";
        $user_agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
        $header [] = "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1";
        $header [] = "Accept-Language: ru-RU,ru;q=0.9,en;q=0.8";
        $header [] = "Accept-Charset:  utf-8, *;q=0.1";
        $header [] = "Accept-Encoding: deflate, identity, *;q=0";
        $user_cookie = "cookies.txt";

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_FAILONERROR, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 3);
        curl_setopt($ch, CURLOPT_REFERER, $referer);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header );
        curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie);
        curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie);
        curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
        curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
        $result = curl_exec($ch);
        curl_close($ch);
    for($page=0;$page<40;$page++ ){
        $url = "http://site?page=".$page;
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_FAILONERROR, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 3);
        curl_setopt($ch, CURLOPT_REFERER, $referer);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header );
        curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie);
        curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
        curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

        $html = curl_exec($ch);
        curl_close($ch);
}
...
Рейтинг: 0 / 0
cURL в цикле
    #38871761
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятно, временный бан по айпи на удалённом сервере (а бывает и постоянный), или удалённый сервер "прилегает" от создаваемой нагрузки или... еще сотня причин. Попробуйте запросить что-то другое (да хотя бы robots.txt) и/или с другого ресурса, чтобы определить точнее место проблемы. А вообще, довольно распространённый способ борьбы с ботами - нормальный пользователь на просмотр 20 страничек потратит гораздо больше времени, нежели не слишком порядочный робот :-)
...
Рейтинг: 0 / 0
cURL в цикле
    #38871783
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,
Решил проблему. Возможно кому то пригодится т.к. на просторах рунета нашел много таких не решенных вопросов.
Все оказалось проще, все переменные в конце каждого цикла уничтожаю. unset() Или можно проще поместить все в функцию и вызывать ее каждый цикл, соответственно переменные будут автоматически уничтожатся. Видимо при парсинге в цикле идет переполнение.
...
Рейтинг: 0 / 0
cURL в цикле
    #38871996
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну ты не решил проблему ,а угадал

$user_agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
$header [] = "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1";
$header [] = "Accept-Language: ru-RU,ru;q=0.9,en;q=0.8";
$header [] = "Accept-Charset: utf-8, *;q=0.1";
$header [] = "Accept-Encoding: deflate, identity, *;q=0";
естественно что этот код в цикле приведёт к тому, что в заголовках будет(на 25 шаге???) по 25 копий одних и тех же хедоров.

ооо
подозреваю что гдето и 4кб может быть(на веб серверах разные там буферы лимиты ставяться N*4Kb

твои 245*25копий - итого 6125

но у тебя ещо как минимум хедер GET .....

вот похоже что на дефолтный лимит апача - 8кб ты и нарываешься.
...
Рейтинг: 0 / 0
cURL в цикле
    #38871998
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всмысле не 25 GET..
а GET + REFER + COOCIE +user-agent + ещо чтото дефолтно шлёться, и акурат на 8кб буфер для хедеров попадаешь
...
Рейтинг: 0 / 0
cURL в цикле
    #38872000
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453,

у него вроде header[]= не в цикле как раз :)
...
Рейтинг: 0 / 0
cURL в цикле
    #38872872
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-k2-,

да точно, я не заметил вообще у него цикла, и подумал что весь код в цикле работает.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / cURL в цикле
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]