[PHP] Можно ли скачать только первые 10Кб страницы? CURL?

T
На сайте с 28.06.2007
Offline
82
1408

Подскажите пожалуйста.

Можно ли скачать только первые 10Кб страницы через CURL?

Т.е. чтобы можно было указать ограничение, после которого скачивать страницу не нужно...

skAmZ
На сайте с 04.09.2009
Offline
122
#1

Попробуй CURLOPT_WRITEFUNCTION с прерыванием при превышении...

[Удален]
#2

Следующий класс поможет решить Вашу задачу:

<?php

class Download
{
public function __construct( $url, $bytes, $file )
{
$this->url = $url;
$this->bytes = $bytes;
$this->file = $file;
$this->data = null;
$this->init();
}

private function init()
{
$curlh = curl_init();
curl_setopt( $curlh, CURLOPT_URL, $this->url );
curl_setopt( $curlh, CURLOPT_WRITEFUNCTION, array( $this, 'get' ) );
$result = curl_exec( $curlh );
curl_close( $curlh );
}

private function get( $ch, $chunk )
{
$this->data .= $chunk;
if ( strlen( $this->data ) >= $this->bytes )
{
$this->save();
return -1;
}
return strlen( $chunk );
}

private function save()
{
# раскомментируйте следующую строку если хотите сохранить точную количество байтов
//$this->data = substr( $this->data, 0, $this->bytes );
file_put_contents( $this->file, $this->data );
}
}

$url = '/;
$bytes = 10240;
$file = 'file.txt';
new Download( $url, $bytes, $file );
?>
T
На сайте с 28.06.2007
Offline
82
#3

Что-то трудоёмко, думал есть решение которое помещается в одну строчку, просто не смог его найти :( Оказывается всё сложнее и смысла практически нет :(

Спасибо вам за ответы.

siv1987
На сайте с 02.04.2009
Offline
427
#4

Юзай file_get_contents

file_get_contents('http://site.ru', null, null, 0, 10240);

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий