[英]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.