Как скачивать только часть страницы курлом? - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB93.4409
BTC/USD66472.1555
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 21.08.2009, 23:10   #1
Hector
hustle
 
Аватар для Hector
 
Регистрация: 02.05.2008
Адрес: 3d world
Сообщений: 12,890
Бабло: $1717315
Отправить сообщение для Hector с помощью Jabber
По умолчанию Как скачивать только часть страницы курлом?

Например только первые 50 килобайт а потом обрезать?
Hector вне форума  
Старый 22.08.2009, 00:26   #2
MFC
Listen to the bit
 
Аватар для MFC
 
Регистрация: 15.08.2009
Сообщений: 362
Бабло: $22480
По умолчанию

Не получится. Он работает до полной загрузки, потом обнуляет параметр errno, то есть успешность операции(только после полной загрузки страницы, по ответу вебсервера).
Но есть возможность работать с тем, что он скачал, выделить оттуда эти самые 50 байт.
Такая задача влегкую решается на си.
__________________
Если есть причина , всегда есть следствие. Мы это следствие.
MFC вне форума  
Старый 22.08.2009, 00:28   #3
Hector
hustle
 
Аватар для Hector
 
Регистрация: 02.05.2008
Адрес: 3d world
Сообщений: 12,890
Бабло: $1717315
ТС -->
Отправить сообщение для Hector с помощью Jabber
автор темы ТС По умолчанию

ну такая задача решается походу и сокетами
Hector вне форума  
Старый 22.08.2009, 01:13   #4
PipeCleaner
Ебланнед
 
Аватар для PipeCleaner
 
Регистрация: 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 кода.
PipeCleaner вне форума  
Старый 22.08.2009, 01:14   #5
Hector
hustle
 
Аватар для Hector
 
Регистрация: 02.05.2008
Адрес: 3d world
Сообщений: 12,890
Бабло: $1717315
ТС -->
Отправить сообщение для Hector с помощью Jabber
автор темы ТС По умолчанию

PipeCleaner спасибо, но кукисы и таймауты нужны..... ну и остальная херь
Hector вне форума  
Старый 22.08.2009, 01:25   #6
dveredel
Читатель
 
Аватар для dveredel
 
Регистрация: 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.
dveredel вне форума  
Старый 22.08.2009, 18:02   #7
oso
кодер
 
Аватар для oso
 
Регистрация: 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($crCURLOPT_RETURNTRANSFER1); 
curl_setopt($crCURLOPT_WRITEFUNCTION,write_callback); 
curl_exec($cr); 
curl_close ($cr); 
echo 
$r;
__________________
php скрипты от $25 Отзывы: 2013-2011, 2010, 2009. acя: 384 846 ноль два шесть
oso вне форума