0

I'm trying to use curl to fetch only a portion of a page so it will download less data thus making it quicker. I've been testing every possible option i can think of to no avail. The main one ive tried is defining a range: curl_setopt($ch, CURLOPT_RANGE, "0-4096");

The servers im trying this on are HTTP 1.1 but the setting has no effect as the entire page is pulled. Is there an alternative way to close the connection after X bytes in PHP or something along those lines?

Ryan Cooper
  • 703
  • 3
  • 11
  • 23
  • 1
    This will only work if the Server actually accepts `Range`. You will know this by sending a request and seeing if it returns the `Accept-Ranges` header. Can you confirm you are getting those from your servers? – Kevin Peno May 18 '11 at 17:11
  • I'm not seeing it, Is there another method to do roughly the same thing? – Ryan Cooper May 18 '11 at 17:41
  • not that I am aware of. Unless you want to create your own raw [stream](http://php.net/stream). – Kevin Peno May 18 '11 at 17:52

1 Answers1

3

You can use your own write callback (CURLOPT_WRITEFUNCTION) and have that return an error once you've received enough data.

An example using such a write callback can be found here: http://curl.haxx.se/libcurl/php/examples/callbacks.html

Daniel Stenberg
  • 54,736
  • 17
  • 146
  • 222