2012-04-22 10 views
2

バックアップを自動的に生成するバックアップシステムを作成していますので、別のサーバにバックアップを保存しますが、ダウンロードしたいとき私はリンクをワンタイムリンクにしたい、これは難しいことではありませんが、これを安全にするために、私はファイルを格納することを考えていました。FTPからファイルをストリーミングして同時にダウンロードさせる

私はFTP経由でconnetを行い、メインサーバーにファイルをダウンロードし、ダウンロードと削除を行いますが、バックアップが大きい場合には時間がかかります。ストリームする方法はありますか実際の場所をダウンロードしてサーバーに保管していない人物を表示せずにFTPから入手できますか?

+0

は内部バックアップですか?誰がダウンロードをしていますか? –

答えて

0

cURLを使用した非常に基本的な例です。これは、FTPからデータを読み取ることができるときに呼び出される読み取りコールバックを指定し、FTPトランザクションがバックアップサーバーで実行されているときにクライアントに同時にダウンロードするためにデータをブラウザに出力します。

これは拡張可能な非常に基本的な例です。

<?php 

// ftp URL to file 
$url = 'ftp://ftp.mozilla.org/pub/firefox/nightly/latest-firefox-3.6.x/firefox-3.6.29pre.en-US.linux-i686.tar.bz2'; 

// init curl session with FTP address 
$ch = curl_init($url); 

// specify a callback function for reading data 
curl_setopt($ch, CURLOPT_READFUNCTION, 'readCallback'); 

// send download headers for client 
header('Content-type: application/octet-stream'); 
header('Content-Disposition: attachment; filename="backup.tar.bz2"'); 

// execute request, our read callback will be called when data is available 
curl_exec($ch); 


// read callback function, takes 3 params, the curl handle, the stream to read from and the maximum number of bytes to read  
function readCallback($curl, $stream, $maxRead) 
{ 
    // read the data from the ftp stream 
    $read = fgets($stream, $maxRead); 

    // echo the contents just read to the client which contributes to their total download 
    echo $read; 

    // return the read data so the function continues to operate 
    return $read; 
} 

CURLOPT_READFUNCTIONオプションの詳細はcurl_setopt()を参照してください。

関連する問題