Look at sockets:
http://www.php.net/fsockopen
Example:
$fp = fsockopen("www.domain.com", "80", &$errno, &$error, 30);
// This says connect to www.domain.com on port 80 (http), give a 30 second timeout and store the errors in $errno and $error
fputs($fp, "GET /myzipfile.zip\r\n");
// This will send the http request to get a file off the web server, the /myzipfile.zip is everything in the url after http://www.domain.com, and the \r\n is required.
while (!feof($fp)) {
$buffer.= fgets($fp, 1024);
}
// This says while we still have something coming in, add it to the variable $buffer
fclose($fp);
// All done! Have the file stored in $buffer. From here you may do what you like.
Hope that helps!
Chris King