我需要php腳本來從url下載可恢復文件到服務器。它應該能夠開始下載,然後當它快照(30秒-5分鐘)恢復時,以此類推直到它完成整個文件。用php curl下載大文件塊
perl http://curl.haxx.se/programs/download.txt有類似的東西,但我想用php做,我不知道perl。
我認爲使用CURLOPT_RANGE
下載塊和fopen($fileName, "a")
將它追加到服務器上的文件。
這裏是我的嘗試:
<?php
function run()
{
while(1)
{
get_chunk($_SESSION['url'], $_SESSION['filename']);
sleep(5);
flush();
}
}
function get_chunk($url, $fileName)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if (file_exists($fileName)) {
$from = filesize($fileName);
curl_setopt($ch, CURLOPT_RANGE, $from . "-");//maybe "-".$from+1000 for 1MB chunks
}
$fp = fopen($fileName, "a");
if (!$fp) {
exit;
}
curl_setopt($ch, CURLOPT_FILE, $fp);
$result = curl_exec($ch);
curl_close($ch);
fclose($fp);
}
?>
這會有所幫助。 http://stackoverflow.com/questions/2032924/how-to-partially-download-a-remote-file-with-curl – kpotehin