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 раз(а)
|
|
|
|
С нами с 18.01.06
Сообщения: 322
Рейтинг: 487
|
Добавлено: 04/07/07 в 20:23 |
Что-то в коде функции не увидел curl_exec
Для пущей уверенности покажи функцию save_html
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 04/07/07 в 20:47 |
гм, по идее вообще не должно работать , процесс закрывается а вызов так и не инициализируется.
Или же все таки вызов закачки в другом месте находится.
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
8
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760
|
Добавлено: 04/07/07 в 20:54 |
поправил, сории
|
|
|
|
С нами с 21.09.03
Сообщения: 7329
Рейтинг: 2144
|
Добавлено: 04/07/07 в 20:59 |
Уже вижу одну ошибку. по которой у меня реджектятся все роботы отечественного производства. Надо же, кто-то один глупость ляпнул, и, как радости вебмастерам, эту ошибку копируют из одного места в другое
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 04/07/07 в 21:00 |
все равно не должно работать
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);
забыл
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760
|
Добавлено: 04/07/07 в 21:08 |
да
на другом хосте и в другом скрипте функция работает без глюков, вот парадокс
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 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 |
Все равно в коде не нашел где картинки забираются
Вижу только что html код страницы сохраняется
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760
|
Добавлено: 04/07/07 в 22:45 |
там боди файла забирается
а html название переменной. не суть
в итоге выкинул курл и обчная конструкция заработала
fread-fwrite
чудеса на виражах
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760
|
Добавлено: 04/07/07 в 22:49 |
ндя поторопился
|
|
|
|
С нами с 25.01.07
Сообщения: 257
Рейтинг: 262
|
Добавлено: 04/07/07 в 23:00 |
а все просто - тебе отдается пустой контент с редиректом 302 или навроде.
на php.net в доке был пример обхода.
|
|
|
|
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, ?);
может оно?
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760
|
Добавлено: 04/07/07 в 23:35 |
я проверяю картинки на 200 код
|
|
|
|
С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096
|
Добавлено: 04/07/07 в 23:56 |
ты хочешь сказать, что с этой опцией у тебя вообще что то работает?
curl_setopt($ch, CURLOPT_NOBODY, 1);
когда CURLOPT_NOBODY == TRUE, из результата исключается тело, остается только заголовок. далее, если при этом еще и отключен вывод заголовка (CURLOPT_HEADER=0), то в выводе останется тока борода
кстати, при передаче бинарных файлов надо бы ставить опцию CURLOPT_BINARYTRANSFER.
Последний раз редактировалось: webboxxx (05/07/07 в 00:00), всего редактировалось 1 раз
|
|
|
|
С нами с 25.01.07
Сообщения: 257
Рейтинг: 262
|
Добавлено: 04/07/07 в 23:59 |
Sterx писал: | я проверяю картинки на 200 код |
ты не понял
порой как раз от таких роботов и стоит защита.
идет редирект 302, 301 и тд
Отлавливаешь куда идет - см. документацию как. берешь новый урл и снова тащиш курлом и так пока не сольешь картинку.
|
|
|
|
С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096
|
Добавлено: 05/07/07 в 00:01 |
brainstorm писал: | Отлавливаешь куда идет - см. документацию как. берешь новый урл и снова тащиш курлом и так пока не сольешь картинку. |
все гораздо проще - специально для этого придумали опции CURLOPT_FOLLOWLOCATION и CURLOPT_MAXREDIRS.
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760
|
Добавлено: 05/07/07 в 00:24 |
webboxxx писал: | ты хочешь сказать, что с этой опцией у тебя вообще что то работает?
curl_setopt($ch, CURLOPT_NOBODY, 1);
|
не то вообще скопировал.
заработался
пробую что все говорите, ничего резалт тот же
как вообще отследить из-за чего рвется коннект
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760
|
Добавлено: 05/07/07 в 00:26 |
вся фишка в том, что картинки скачиваются, но не все
|
|
|
|
С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096
|
Добавлено: 05/07/07 в 01:00 |
перед curl_close($ch) поставь echo '<pre>'.print_r(curl_getinfo($ch),1).'</pre>';
результат сюда кидай
|
|
|
|
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
)
|
|
|
|
С нами с 19.11.06
Сообщения: 2295
Рейтинг: 345
|
Добавлено: 05/07/07 в 01:28 |
в реферере передай полный путь до папки со скачиваемой картинкой, т.е. "http://domen.com/полный путь до папки с картинкой/"
|
|
Строим Луна-парки с блэкджеком и шлюхами. Дорого.
|
0
|
|
|
С нами с 26.02.03
Сообщения: 2366
Рейтинг: 987
|
Добавлено: 05/07/07 в 01:31 |
Использую сокеты, с анализом ответов - ни разу проблем не было.
|
|
|
|
С нами с 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)
|
|
|
|