簡體   English   中英

使用PHP下載遠程文件(2GB)

[英]Download a remote file (2GB) using PHP

我有一個大文件(2GB),我想用服務器B用PHP將它下載到服務器A.

我用PHP嘗試了FTP和CURL但沒有成功。 即使我將set_time_limit()設置為0,它也會返回TIMEOUT REQUEST錯誤。

這是我的代碼:

<?php

set_time_limit(0)

$local_file = 'file.zip';
$server_file = '/www/file.zip';

$conn_id = ftp_connect("ftp.webmashing.com");

$login_result = ftp_login($conn_id, "USERNAME", "PASSWORD");

if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
echo "Successfully written to $local_file\n";
} else {
echo "There was a problem\n";
}

ftp_close($conn_id);

?>

如果你有超時上傳文件,你可能會看看ftp_pasv()

bool ftp_pasv ( resource $ftp_stream , bool $pasv )

在你的情況下,試試這個:

$conn_id = ftp_connect("ftp.webmashing.com");

$login_result = ftp_login($conn_id, "USERNAME", "PASSWORD");

ftp_pasv($conn_id, true);

調用時,set_time_limit()從零重新啟動超時計數器。 換句話說,如果超時是默認的30秒,並且腳本執行25秒,則進行諸如set_time_limit(20)之類的調用,腳本將在超時之前運行總共45秒。 請檢查php.ini中的“max_execution_time”指令

如果可以(取決於您的php文件的執行位置),您可以將max_execution_time更改為更長。

現在,我會做什么(仍然,如果你有權利),是在從php文件調用的命令行中做。 命令行會將結果寫入特定文件,您所要做的就是檢查該文件的內容。

一旦結果被寫入(比如說“0”就像在linux中一樣成功),你可以做你想要的。

在前端,獲得下載狀態的一點點ajax也很有用!

但是一如既往,這取決於你是否可以運行shell命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM