Реклама на сайте Advertise with us

CURL и удаленный забор изображений

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

programmer

С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760

Ссылка на сообщениеДобавлено: 04/07/07 в 20:18       Ответить с цитатойцитата 

юзаю
Код:
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 раз(а)

крипта на ByBit

0
 



С нами с 18.01.06
Сообщения: 322
Рейтинг: 487

Ссылка на сообщениеДобавлено: 04/07/07 в 20:23       Ответить с цитатойцитата 

Что-то в коде функции не увидел curl_exec
Для пущей уверенности покажи функцию save_html

8
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 04/07/07 в 20:47       Ответить с цитатойцитата 

гм, по идее вообще не должно работать , процесс закрывается а вызов так и не инициализируется.

Или же все таки вызов закачки в другом месте находится.

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

8
 

programmer

С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760

Ссылка на сообщениеДобавлено: 04/07/07 в 20:54       Ответить с цитатойцитата 

поправил, сории

крипта на ByBit

0
 



С нами с 21.09.03
Сообщения: 7329
Рейтинг: 2144

Ссылка на сообщениеДобавлено: 04/07/07 в 20:59       Ответить с цитатойцитата 

Уже вижу одну ошибку. по которой у меня реджектятся все роботы отечественного производства. Надо же, кто-то один глупость ляпнул, и, как радости вебмастерам, эту ошибку копируют из одного места в другое icon_smile.gif

8
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 04/07/07 в 21:00       Ответить с цитатойцитата 

все равно не должно работать icon_smile.gif
curl_exec выплевывает результат на вывод. Где то ты должен открыть буфер, вызвать curl_exec и потом закрыть буфер. И уже с буфера взять контент.

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

8
 

programmer

С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760

Ссылка на сообщениеДобавлено: 04/07/07 в 21:03       Ответить с цитатойцитата 


седня потерянный я
curl_setopt($ch, CURLOPT_NOBODY, 1);
забыл

крипта на ByBit

0
 

programmer

С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760

Ссылка на сообщениеДобавлено: 04/07/07 в 21:08       Ответить с цитатойцитата 

да
на другом хосте и в другом скрипте функция работает без глюков, вот парадокс

крипта на ByBit

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 04/07/07 в 21:12       Ответить с цитатойцитата 

а не, нормально, какая то новая CURLOPT_RETURNTRANSFER директива смотрю уже есть.

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

У меня немного по другому используется, я делаю вывод в буфер, а функция curl_exec отрабатывает только true / false , т.е. четко определяя, была ошибка или нет. Еще по хедерам конечно проверяю, что бы небыло редиректов или 404

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

8
 



С нами с 18.01.06
Сообщения: 322
Рейтинг: 487

Ссылка на сообщениеДобавлено: 04/07/07 в 22:28       Ответить с цитатойцитата 

Все равно в коде не нашел где картинки забираются icon_smile.gif
Вижу только что html код страницы сохраняется

0
 

programmer

С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760

Ссылка на сообщениеДобавлено: 04/07/07 в 22:45       Ответить с цитатойцитата 

там боди файла забирается
а html название переменной. не суть
в итоге выкинул курл и обчная конструкция заработала
fread-fwrite
чудеса на виражах

крипта на ByBit

0
 

programmer

С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760

Ссылка на сообщениеДобавлено: 04/07/07 в 22:49       Ответить с цитатойцитата 

ндя поторопился

крипта на ByBit

0
 



С нами с 25.01.07
Сообщения: 257
Рейтинг: 262

Ссылка на сообщениеДобавлено: 04/07/07 в 23:00       Ответить с цитатойцитата 

а все просто - тебе отдается пустой контент с редиректом 302 или навроде.
на php.net в доке был пример обхода.

0
 

programmer

С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760

Ссылка на сообщениеДобавлено: 04/07/07 в 23:32       Ответить с цитатойцитата 

если CURL'ом забирать тумбинашки все работает
а полноразмерные нифига
надыбал два парметра еще
curl_setopt($ch, CURLOPT_LOW_SPEED_LIMIT, ?);
curl_setopt($ch, CURLOPT_LOW_SPEED_TIME, ?);
может оно?

крипта на ByBit

0
 

programmer

С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760

Ссылка на сообщениеДобавлено: 04/07/07 в 23:35       Ответить с цитатойцитата 

я проверяю картинки на 200 код

крипта на ByBit

0
 



С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096

Ссылка на сообщениеДобавлено: 04/07/07 в 23:56       Ответить с цитатойцитата 

ты хочешь сказать, что с этой опцией у тебя вообще что то работает?
curl_setopt($ch, CURLOPT_NOBODY, 1);

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

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

Последний раз редактировалось: webboxxx (05/07/07 в 00:00), всего редактировалось 1 раз

0
 



С нами с 25.01.07
Сообщения: 257
Рейтинг: 262

Ссылка на сообщениеДобавлено: 04/07/07 в 23:59       Ответить с цитатойцитата 

Sterx писал:
я проверяю картинки на 200 код

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


Отлавливаешь куда идет - см. документацию как. берешь новый урл и снова тащиш курлом и так пока не сольешь картинку.

0
 



С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096

Ссылка на сообщениеДобавлено: 05/07/07 в 00:01       Ответить с цитатойцитата 

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


все гораздо проще - специально для этого придумали опции CURLOPT_FOLLOWLOCATION и CURLOPT_MAXREDIRS.

0
 

programmer

С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760

Ссылка на сообщениеДобавлено: 05/07/07 в 00:24       Ответить с цитатойцитата 

webboxxx писал:
ты хочешь сказать, что с этой опцией у тебя вообще что то работает?
curl_setopt($ch, CURLOPT_NOBODY, 1);

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


пробую что все говорите, ничего резалт тот же
как вообще отследить из-за чего рвется коннект

крипта на ByBit

0
 

programmer

С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760

Ссылка на сообщениеДобавлено: 05/07/07 в 00:26       Ответить с цитатойцитата 

вся фишка в том, что картинки скачиваются, но не все icon_sad.gif

крипта на ByBit

0
 



С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096

Ссылка на сообщениеДобавлено: 05/07/07 в 01:00       Ответить с цитатойцитата 

перед curl_close($ch) поставь echo '<pre>'.print_r(curl_getinfo($ch),1).'</pre>';
результат сюда кидай

0
 

programmer

С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760

Ссылка на сообщениеДобавлено: 05/07/07 в 01:07       Ответить с цитатойцитата 

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
)

крипта на ByBit

0
 



С нами с 19.11.06
Сообщения: 2295
Рейтинг: 345

Ссылка на сообщениеДобавлено: 05/07/07 в 01:28       Ответить с цитатойцитата 

в реферере передай полный путь до папки со скачиваемой картинкой, т.е. "http://domen.com/полный путь до папки с картинкой/"

Строим Луна-парки с блэкджеком и шлюхами. Дорого.

0
 



С нами с 26.02.03
Сообщения: 2366
Рейтинг: 987

Ссылка на сообщениеДобавлено: 05/07/07 в 01:31       Ответить с цитатойцитата 

Использую сокеты, с анализом ответов - ни разу проблем не было.

0
 



С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096

Ссылка на сообщениеДобавлено: 05/07/07 в 01:31       Ответить с цитатойцитата 

ну, вот показывает, что [size_download] => 102060
и что, в $tmp_result пусто чтоли при этом?
после $tmp_result = curl_exec($ch); сделай все таки echo strlen($tmp_result).' '.$tmp_result;

и я настаиваю на (CURLOPT_BINARYTRANSFER, 1)

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »