Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: CURL и удаленный забор изображений
цитата
04/07/07 в 20:18
 Sterx
юзаю
Код:
function remote_file ($site_url,$refer,$tmp_name,$target_directory)
{
$timeout=20;
$user_agent = "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $site_url);
curl_setopt($ch, CURLOPT_REFERER, $refer);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_NOBODY, 1);
$tmp_result = curl_exec($ch);
curl_close($ch);
save_html($target_directory,$tmp_name,$tmp_result);
if($tmp_result){return true;}
else{return false;}
}

function save_html($path,$page,$html)
{
    $file = fopen( $path.$page, "w");
   fwrite( $file, $html);
   fclose( $file );
   chmod ( $path.$page, 0777);
}

имиджи от 100 до 200 кб
функция иногда пишет имиджи с нулевым размером
идет дальнейший затык
где копать?
+8

Последний раз редактировалось: Sterx (04/07/07 в 21:02), всего редактировалось 2 раз(а)
цитата
04/07/07 в 20:23
 proc3nt
Что-то в коде функции не увидел curl_exec
Для пущей уверенности покажи функцию save_html
цитата
04/07/07 в 20:47
 Stek
гм, по идее вообще не должно работать , процесс закрывается а вызов так и не инициализируется.

Или же все таки вызов закачки в другом месте находится.
цитата
04/07/07 в 20:54
 Sterx
поправил, сории
цитата
04/07/07 в 20:59
 lega_cobra
Уже вижу одну ошибку. по которой у меня реджектятся все роботы отечественного производства. Надо же, кто-то один глупость ляпнул, и, как радости вебмастерам, эту ошибку копируют из одного места в другое icon_smile.gif
цитата
04/07/07 в 21:00
 Stek
все равно не должно работать icon_smile.gif
curl_exec выплевывает результат на вывод. Где то ты должен открыть буфер, вызвать curl_exec и потом закрыть буфер. И уже с буфера взять контент.
цитата
04/07/07 в 21:03
 Sterx

седня потерянный я
curl_setopt($ch, CURLOPT_NOBODY, 1);
забыл
цитата
04/07/07 в 21:08
 Sterx
да
на другом хосте и в другом скрипте функция работает без глюков, вот парадокс
цитата
04/07/07 в 21:12
 Stek
а не, нормально, какая то новая CURLOPT_RETURNTRANSFER директива смотрю уже есть.

В общем могу только предложить таймауты увеличить, ну или обновить курл, он возможно багит.

У меня немного по другому используется, я делаю вывод в буфер, а функция curl_exec отрабатывает только true / false , т.е. четко определяя, была ошибка или нет. Еще по хедерам конечно проверяю, что бы небыло редиректов или 404
цитата
04/07/07 в 22:28
 proc3nt
Все равно в коде не нашел где картинки забираются icon_smile.gif
Вижу только что html код страницы сохраняется
цитата
04/07/07 в 22:45
 Sterx
там боди файла забирается
а html название переменной. не суть
в итоге выкинул курл и обчная конструкция заработала
fread-fwrite
чудеса на виражах
цитата
04/07/07 в 22:49
 Sterx
ндя поторопился
цитата
04/07/07 в 23:00
 brainstorm
а все просто - тебе отдается пустой контент с редиректом 302 или навроде.
на php.net в доке был пример обхода.
цитата
04/07/07 в 23:32
 Sterx
если CURL'ом забирать тумбинашки все работает
а полноразмерные нифига
надыбал два парметра еще
curl_setopt($ch, CURLOPT_LOW_SPEED_LIMIT, ?);
curl_setopt($ch, CURLOPT_LOW_SPEED_TIME, ?);
может оно?
цитата
04/07/07 в 23:35
 Sterx
я проверяю картинки на 200 код
цитата
04/07/07 в 23:56
 webboxxx
ты хочешь сказать, что с этой опцией у тебя вообще что то работает?
curl_setopt($ch, CURLOPT_NOBODY, 1);

когда CURLOPT_NOBODY == TRUE, из результата исключается тело, остается только заголовок. далее, если при этом еще и отключен вывод заголовка (CURLOPT_HEADER=0), то в выводе останется тока борода icon_smile.gif

кстати, при передаче бинарных файлов надо бы ставить опцию CURLOPT_BINARYTRANSFER.

Последний раз редактировалось: webboxxx (05/07/07 в 00:00), всего редактировалось 1 раз
цитата
04/07/07 в 23:59
 brainstorm
Sterx писал:
я проверяю картинки на 200 код

ты не понял
порой как раз от таких роботов и стоит защита.
идет редирект 302, 301 и тд


Отлавливаешь куда идет - см. документацию как. берешь новый урл и снова тащиш курлом и так пока не сольешь картинку.
цитата
05/07/07 в 00:01
 webboxxx
brainstorm писал:
Отлавливаешь куда идет - см. документацию как. берешь новый урл и снова тащиш курлом и так пока не сольешь картинку.


все гораздо проще - специально для этого придумали опции CURLOPT_FOLLOWLOCATION и CURLOPT_MAXREDIRS.
цитата
05/07/07 в 00:24
 Sterx
webboxxx писал:
ты хочешь сказать, что с этой опцией у тебя вообще что то работает?
curl_setopt($ch, CURLOPT_NOBODY, 1);

не то вообще скопировал.
заработался


пробую что все говорите, ничего резалт тот же
как вообще отследить из-за чего рвется коннект
цитата
05/07/07 в 00:26
 Sterx
вся фишка в том, что картинки скачиваются, но не все icon_sad.gif
цитата
05/07/07 в 01:00
 webboxxx
перед curl_close($ch) поставь echo '<pre>'.print_r(curl_getinfo($ch),1).'</pre>';
результат сюда кидай
цитата
05/07/07 в 01:07
 Sterx
Array
(
[url] => http://-------.us/photos/121531.jpg
[content_type] => image/jpeg
[http_code] => 200
[header_size] => 253
[request_size] => 170
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 2.430741
[namelookup_time] => 3.3E-05
[connect_time] => 0.166738
[pretransfer_time] => 0.166778
[size_upload] => 0
[size_download] => 102060
[speed_download] => 41987
[speed_upload] => 0
[download_content_length] => 102060
[upload_content_length] => 0
[starttransfer_time] => 0.360214
[redirect_time] => 0
)
цитата
05/07/07 в 01:28
 Klirik
в реферере передай полный путь до папки со скачиваемой картинкой, т.е. "http://domen.com/полный путь до папки с картинкой/"
цитата
05/07/07 в 01:31
 Cibtor
Использую сокеты, с анализом ответов - ни разу проблем не было.
цитата
05/07/07 в 01:31
 webboxxx
ну, вот показывает, что [size_download] => 102060
и что, в $tmp_result пусто чтоли при этом?
после $tmp_result = curl_exec($ch); сделай все таки echo strlen($tmp_result).' '.$tmp_result;

и я настаиваю на (CURLOPT_BINARYTRANSFER, 1)
Стр. 1, 2  >  последняя »


Эта страница в полной версии