Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Как на Curl считать первые пять строк?
Новая тема
Ответить
цитата
15/01/08 в 20:55
ibiz
на сокетах понятно как, а можно ли такое проделать с помощью библиотеки curl - считать 500 байт сайта, без учета хэдеров?
цитата
15/01/08 в 21:05
-=Faraon=-
Код:
curl_setopt($c, CURLOPT_RANGE, "0-500");
цитата
15/01/08 в 21:18
ibiz
вот эта функция как-раз и не сработала...
а как точно посмотреть, поддерживает сервер RANGE или нет?
P.S. на сокетах работает
цитата
15/01/08 в 22:04
-=Faraon=-
Сохрани в файл и посмотри если занимает 500 байт... то работает!
цитата
15/01/08 в 22:44
redred
Мне кажется что проще считать весь документ , сделать эксплод в массив, и взять первые пять строк
$dataarr = explode("\n",$data);
взять первые 5 значений массива.
цитата
15/01/08 в 23:33
ibiz
-=Faraon=-:
я вижу, что он принимает документ размером 11790, а должен размером 500...
redred:
у меня задача немного другая, какраз не надо читать весь документ...
цитата
16/01/08 в 00:04
brainstorm
в самой библиотеке реально можно.. на C
В PHP никак.
цитата
16/01/08 в 00:16
Heavy
я поступал в пыхе следующим образом.
1. курлу передавался RANGE
2. курлу назначалсь функция обработки "входящих данных" curl_setopt(<handle>, CURLOPT_WRITEFUNCTION,<fn>); в которой и смотрелось - достаточно ли имеем, если да - то просим курл (через результат функции) прекратить качать далее. конечно с таким подходом часто получается значительная перекачка ненужных данных, но как простое решение для определенных задач подходит
)
цитата
16/01/08 в 00:42
-=Faraon=-
Должно работать... может гдето ошибку допустил!!! у меня работает на версии (libcurl/7.14.0 OpenSSL/0.9.8a zlib/1.2.3)
Может можно обойтись без курла тогда fgets поможет!
цитата
16/01/08 в 00:54
Heavy
-=Faraon=-:
к сожалению, это зависит не от версии курла или пыха на стороне читающего, а от стороны отдающего. т.к. не все виды контента можно выдернуть по RANGE. например - таже некешированная страница, генерируемая каким-то скриптом = для нее даже конечный размер и тот не известен. поэтому при любом указании RANGE будет отдан весь контент - конечно не исключаю вариант супер "умных" веб-серверов поступающих иначе ;)
цитата
16/01/08 в 01:14
ibiz
Heavy писал:
2. курлу назначалсь функция обработки "входящих данных" curl_setopt(<handle>, CURLOPT_WRITEFUNCTION,<fn>);
как-то она кривовато работает, отдает страницу кусками по 1кб...
но уже хоть что-то... спасибо
цитата
16/01/08 в 04:22
webboxxx
само собой, не будет же он по одному байту считывать. видимо там определен буффер размером 1 кб.
ты посмотри в сторону CURLOPT_BUFFERSIZE, я не уверен, но возможно это и есть размер этого буффера, поставь поменьше.
цитата
16/01/08 в 11:22
Heavy
крути или не крути, но всеравно на серв придет этот килобайт и больше, хоть ты в функцию может и получишь меньшими порциями. все определяется минимальным размером пакета - и дробить на меньше смысла никакого - т.к. что 5 байт, что 4Кб пройдут одинаково. главная задача же не точно 500байт получить, а не скачать пару мегабайт случайно
))
цитата
16/01/08 в 12:24
Stek
а почему не запросить всю страницу и взять с нее нужное число байт ?
цитата
16/01/08 в 13:08
Heavy
Stek писал:
а почему не запросить всю страницу и взять с нее нужное число байт ?
так не всегда это нужно
где-то из-за скорости, где-то из-за трафика.
могу встречный вопрос задать - почему бы не загрузить пару тысяч мувиков целиком только для того, что бы прочитать их заголовки ;)
большие объемы, кстати, и на "обычных" страницах встречаются - частенько попадались сайтики со страницами от 1,5метров и до безобразия
))
цитата
16/01/08 в 14:40
Stek
вроде бы нельзя так сделать.
Легче на сокетах изобразить.
Новая тема
Ответить
Эта страница в полной версии