2017-10-29 4 views
0

私はPHPでこのコードを書いて、ファイルの変更名でリモートURLをリーチし、サポートを再開しました。うまくいくが、再開できない。問題はどこだ?PHPリモートURLリーチ

私は実際にユーザーとリモートサーバーの間で受信したヘッダーを共有しました。 私は増量ラムの使用なしでこのようにURLを借りることができますか?

<?php 
ini_set('display_errors', '0'); 

function get_header($url,$header) { 
    $my_ch = curl_init(); 
    curl_setopt($my_ch, CURLOPT_URL,$url); 
    curl_setopt($my_ch, CURLOPT_HTTPHEADER,$header); 
    curl_setopt($my_ch, CURLOPT_HEADER, true); 
    curl_setopt($my_ch, CURLOPT_NOBODY, true); 
    curl_setopt($my_ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($my_ch, CURLOPT_TIMEOUT, 10); 
    return curl_exec($my_ch); 
} 

$data_file = "http://dl.hexdownload.net/up/Movie/Anime/1396/07/Robots.2005.1080p.Farsi.Dubbed.Glory.HexDL.com.mkv"; 
$filename = 'file.mkv'; 

if(isset($_SERVER['HTTP_RANGE']) || isset($HTTP_SERVER_VARS['HTTP_RANGE'])) { 

    $my_header = getallheaders(); 

    $i = 0; 
    foreach($my_header as $key => $value) 
     $header_curl[$i++]= $key.': '.$value; 

    $header_read = null; 
    foreach($my_header as $key => $value) 
     $header_read .= $key.': '.$value."\r\n"; 

    $recieved_header = get_header($data_file,$header_curl); 

    $recieved_header = explode("\r\n", $recieved_header); 
    foreach($recieved_header as $value) 
     header($value); 

    while (!(connection_aborted() || connection_status() == 1)) { 
     $ctx = stream_context_create(
            array(
             'http'=> $header_read 
            ) 
       ); 

     readfile($data_file, false, $ctx); 
    } 
} 
else{ 
    header('Accept-Ranges: bytes'); 
    header("Content-Description: File Transfer"); 
    header("Content-Type: application/otect-stream"); 
    header('Content-Disposition: attachment; filename="'.$filename.'"'); 

    $my_header = getallheaders(); 

    $header_read = null; 
    foreach($my_header as $key => $value) 
     $header_read .= $key.': '.$value."\r\n"; 

    $i = 0; 
    foreach($my_header as $key => $value) 
     $header_curl[$i++]= $key.': '.$value; 

    $recieved_header = get_header($data_file,$header_curl); 

    $recieved_header = explode("\r\n", $recieved_header); 
    foreach($recieved_header as $value) 
     header($value); 

    while (!(connection_aborted() || connection_status() == 1)) { 
     $ctx = stream_context_create(
            array(
             'http'=> $header_read 
            ) 
       ); 
     readfile($data_file, false, $ctx); 
    } 
} 

exit; 

2時間後、私はこのメッセージを持っている履歴書の一時停止: Download error!

をURLにリーチするための他の方法とは?任意のスクリプト?

+0

本当に機能していませんか?私はこのコードを使用し、それはサイズ1.3GBのファイルをダウンロードしていました。 –

+0

はい、再開はサポートされていません –

答えて

0

私は再開があなたが処理できるものだとは思わない。再開は、ファイルを提供しているサーバーによって異なります。

関連する問題