Why 3 methods? Why not just use sockets if that's the lowest common denominator?
Hmmm good thought. Don't think sockets get disabled by hosters, so yes, this would be the lowest common denominator. You are probably right.

Code comments re: socket version:

should call stream_set_timeout()
I didn't really dig into the socket-thing, i only checked if it works.

need to concatenate response, otherwise it doesn't work on files > 1K
Yeah right, i only saw the updater for this

should check the response header for HTTP error code
Also right, this code is probably too rudimentary