kıvırın: GET boyutunu sınırlamak nasıl?

4 Cevap php

Ben (benim durumumda PHP kullanarak) kıvrılma ile bir URL'den ilk 10k bayt almak istiyorum. Bu belirtmek için bir yolu var mı? Ben CURLOPT_BUFFERSIZE bunu düşündüm, ama sadece tüm içeriği alınana kadar yeniden bir tampon boyutunu belirlemek için görünür.

4 Cevap

Bu i c + + bunu nasıl

int offset = 0;
int size = 10*1024;

char range[256];
curl_slist_s *pHeaders = NULL;
snprintf(range, 256, "Range: bytes=%d-%d", offset, offset+size-1);

pHeaders = curl_slist_append(pHeaders, range);
curl_easy_setopt(pCurlHandle, CURLOPT_HTTPHEADER, pHeaders);

curl_slist_free_all(pHeaders);
pHeaders = NULL;

Düzenleme: Sadece php anlamına geliyordu öğrendim. Ben nasıl port öğrenebilirsiniz eğer hasta bakın.

Bu php çalışması gerektiğini düşünüyorum:

$offset = 0;
$size = 10*1024;

$a = $offset;
$b = $offset + $size-1;

curl_easy_setopt(curlHandle, CURLOPT_HTTPHEADER, array("Range: bytes=$a-$b") );

CURLOPT_RANGE orada olmasına rağmen PHP çalışmaz görünüyor. Bunu kullanmak için bir google arama aynı sayıda mesaj ortaya koyacaktır çalıştım en azından bir etkisi yoktu.

Ben kıvırmak tercih rağmen, yerine düzelene fread kullanırsanız, örneğin, almak istediğiniz verilerin boyutunu belirleyebilirsiniz:

$fp = @fopen($url, "r") ;

$data = "" ;
if($fp) {
    while (!feof($fp)) {
        $data .= fread($fp, $size) ;
}
fclose($fp) ;

Ne bu konuda:

// 1-10240 is range of downloaded bytes (10 kb = 10240 byte)
curl_setopt($ch, CURLOPT_RANGE,"1-10240");