|
| Дата |
|
USD/RUB | 93.4409 | BTC/USD | 66472.1555 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
21.08.2009, 23:10
|
#1
|
hustle
Регистрация: 02.05.2008
Адрес: 3d world
Сообщений: 12,890
Бабло: $1717315
|
Как скачивать только часть страницы курлом?
Например только первые 50 килобайт а потом обрезать?
|
|
|
22.08.2009, 00:26
|
#2
|
Listen to the bit
Регистрация: 15.08.2009
Сообщений: 362
Бабло: $22480
|
Не получится. Он работает до полной загрузки, потом обнуляет параметр errno, то есть успешность операции(только после полной загрузки страницы, по ответу вебсервера).
Но есть возможность работать с тем, что он скачал, выделить оттуда эти самые 50 байт.
Такая задача влегкую решается на си.
__________________
Если есть причина , всегда есть следствие. Мы это следствие.
|
|
|
22.08.2009, 00:28
|
#3
|
hustle
Регистрация: 02.05.2008
Адрес: 3d world
Сообщений: 12,890
Бабло: $1717315
ТС -->
|
ТС
ну такая задача решается походу и сокетами
|
|
|
22.08.2009, 01:13
|
#4
|
Ебланнед
Регистрация: 11.07.2008
Сообщений: 172
Бабло: $16220
|
Вот так можно сделать без курла:
Код:
$url = "http://www.gofuckbiz.com";
$maxBytes = 500;
$fp = fopen($url, "r");
$text = fread($fp, $maxBytes);
fclose($fp);
echo $text;
И если посмотрим сорс выполненной страницы, то увидим там этот отрывок html кода.
|
|
|
22.08.2009, 01:14
|
#5
|
hustle
Регистрация: 02.05.2008
Адрес: 3d world
Сообщений: 12,890
Бабло: $1717315
ТС -->
|
ТС
PipeCleaner спасибо, но кукисы и таймауты нужны..... ну и остальная херь
|
|
|
22.08.2009, 01:25
|
#6
|
Читатель
Регистрация: 23.11.2007
Сообщений: 420
Бабло: $48745
|
Цитата:
Сообщение от PipeCleaner
Вот так можно сделать без курла:
Код:
$url = "http://www.gofuckbiz.com";
$maxBytes = 500;
$fp = fopen($url, "r");
$text = fread($fp, $maxBytes);
fclose($fp);
echo $text;
И если посмотрим сорс выполненной страницы, то увидим там этот отрывок html кода.
|
Все файловые операции в ПХП (в том числе и с урл-врапперами) идут через довольно большой внутренний кэш. Т.е. в случае когда надо первые 50 байт прочесть, запросто может скачаться и 16 килобайт
Так что через сокеты...
К сожалению, курл не стопнуть при загрузке страницы, даже юзая read handler.
|
|
|
22.08.2009, 18:02
|
#7
|
кодер
Регистрация: 21.01.2008
Сообщений: 315
Бабло: $69585
|
можно вот так, но это будет не совсем корректно, т.к. будет всегда ошибка.
PHP код:
<?php
$r='';
function write_callback($ch, $data) {
global $x,$r;
$x+=strlen($data);
$r.=$data;
if ($x>10000) return 0;
return strlen($data);
}
$url='http://www.yandex.ru/';
$cr=curl_init($url);
curl_setopt($cr, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cr, CURLOPT_WRITEFUNCTION,write_callback);
curl_exec($cr);
curl_close ($cr);
echo $r;
__________________
php скрипты от $25 Отзывы: 2013-2011, 2010, 2009. acя: 384 846 ноль два шесть
|
|
|
|