оборвать curl

Статус
В этой теме нельзя размещать новые ответы.

ivashka

Полезный
Регистрация
16 Май 2007
Сообщения
151
Реакции
15
Пишу скрипт для продления ссылок на зиппишаре.
Получаю прямую ссылку, могу скачать файл.
Но как при помощи curl оборвать коннект (что бы файл не скачивался)?
Меня устроит и 2-5 сек скачивания файла, или же получить допустим 5 Кб этого файла?

Заранее благодарен.
 
bool curl_setopt ( resource ch, string option, mixed value )

CURLOPT_TIMEOUT: Задает масимальное время выполнения операции в секундах.


или сокеты и чтение блоками
 
bool curl_setopt ( resource ch, string option, mixed value )
CURLOPT_TIMEOUT: Задает масимальное время выполнения операции в секундах.
или сокеты и чтение блоками

это таймаут на разрыв связи. а ТС хочет на живом соединении сделать обрыв. на сокетах конечно было бы правильнее, но долго писать. по моему в этом случае проще наваять десктопное приложение на том же дельфи с участием инди.
 
А curl_close() чем не устраивает? Вызывай после получения первого куска файла (5Кб, или сколько там буфер сделаешь) - и все. Оно само максимум еще столько же скачает (пока буфер не заполнится) - и отвалится. А на том конце будет еще таймаут висеть.

Правильней конечно было бы туда Connection:Close послать, но то уже действительно только сокетами, похоже.
 
Установи таймаут несколько секунд, не успеет скачаться.
У меня была проблема, файл не докачивался доконца, сразу не додумался увеличить время таймаута, просто файл не успевал докачаться.
 
это таймаут на разрыв связи. а ТС хочет на живом соединении сделать обрыв.

Читай первый пост

Но как при помощи curl оборвать коннект (что бы файл не скачивался)?

и описание HTTP протокола
 
ты с курлом работал?

он не позволяет читать данные поблочно
т.е. ты просто не сможешь определить момент когда скачал 5 кБ

curl_close() закроет соединение, НО после того как получит ответ ( т.е. данные целиком )
 
Сорри, действительно не понял.

CURLOPT_RANGE позволяет задать HTTP Range скачиваемого файла и после этого отвалиться по curl_close(). Работать будет только если сервак понимает HTTP Range (т.е. грубо говоря если сервак поддерживает докачку).

Второй способ - повеситься на CURLOPT_WRITEFUNCTION и обрывать соединение в нем.

Третий способ - установить CURLCLOSEPOLICY_OLDEST и банально "вытеснить" скачиваемый файл пустышками.

Ну и в теории еще можно попробовать установить CURLOPT_BUFFERSIZE и дождаться CURLE_OUT_OF_MEMORY. Но не уверен, что это будет работать.
 
Мм.. А если есть прямая ссылка на файл, почему бы не воспользоваться fread и выставить нужный объем?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху