php ile servera remote download
2
●353
- 19-11-2013, 16:26:21Kimlik doğrulama veya yönetimden onay bekliyor.@dewadam;
<?php error_reporting(E_ALL); set_time_limit(0); /** * Copy remote file over HTTP one small chunk at a time. * * @param $in_file The full URL to the remote file * @param $out_file The path where to save the file */ function copyfile_chunked($in_file = null, $out_file = null) { $timer_start = microtime(true); $chunk_size = 10 * (1024 * 1024); # 10 Mb if(is_null($in_file) || strlen($in_file) <= 0) return false; if(is_null($out_file) || strlen($out_file) <= 0) return false; /** * parse_url breaks a part a URL into it's parts, i.e. host, path, * query string, etc. */ $parts = parse_url($in_file); $i_handle = fsockopen($parts['host'], 80, $errstr, $errcode, 5); $o_handle = fopen(str_replace("\\", "/", realpath($out_file)), 'wb'); if($i_handle == false || $o_handle == false) return false; if(!empty($parts['query'])) $parts['path'] .= '?' . $parts['query']; /** * Send the request to the server for the file */ $request = "GET {$parts['path']} HTTP/1.1\r\n"; $request .= "Host: {$parts['host']}\r\n"; $request .= "User-Agent: Mozilla/5.0\r\n"; $request .= "Keep-Alive: 115\r\n"; $request .= "Connection: keep-alive\r\n\r\n"; fwrite($i_handle, $request); /** * Now read the headers from the remote server. We'll need * to get the content length. */ $headers = array(); while(!feof($i_handle)) { $line = fgets($i_handle); if($line == "\r\n") break; $headers[] = $line; } /** * Look for the Content-Length header, and get the size * of the remote file. */ $length = 0; foreach($headers as $header) { if (stripos($header, 'Content-Length:') === 0) { $length = (int) str_replace('Content-Length: ', '', $header); break; } } /** * Start reading in the remote file, and writing it to the * local file one chunk at a time. */ $cnt = 0; while(!feof($i_handle)) { $buf = ''; $buf = fread($i_handle, $chunk_size); $bytes = fwrite($o_handle, $buf); if($bytes == false) return false; $cnt += $bytes; /** * We're done reading when we've reached the conent length */ if ($cnt >= $length) break; } fclose($i_handle); fclose($o_handle); $timer_stop = microtime(true); return (object) array( "status" => true, "downloaded_byte" => $cnt, "request" => (object) array( "requested_at" => $timer_start, "responded_at" => $timer_stop, "elapsed_time" => ($timer_stop - $timer_start) ), "file" => (object) array( "location" => str_replace("\\", "/", realpath($out_file)), "stat" => @stat(str_replace("\\", "/", realpath($out_file))) ) ); } print_r( copyfile_chunked("http://tr.wordpress.org/wordpress-3.7.1-tr_TR.zip", "wordpress-3.7.1-tr_TR.zip") ); /* stdClass Object ( [status] => 1 [downloaded_byte] => 5452282 [request] => stdClass Object ( [requested_at] => 1384871051.4746 [responded_at] => 1384871066.7435 [elapsed_time] => 15.268930912018 ) [file] => stdClass Object ( [location] => D:/XAMPP/htdocs/calisma.alani/wordpress-3.7.1-tr_TR.zip [stat] => Array ( [0] => 3 [1] => 0 [2] => 33206 [3] => 1 [4] => 0 [5] => 0 [6] => 3 [7] => 5452282 [8] => 1384870582 [9] => 1384871066 [10] => 1384870582 [11] => -1 [12] => -1 [dev] => 3 [ino] => 0 [mode] => 33206 [nlink] => 1 [uid] => 0 [gid] => 0 [rdev] => 3 [size] => 5452282 [atime] => 1384870582 [mtime] => 1384871066 [ctime] => 1384870582 [blksize] => -1 [blocks] => -1 ) ) ) */