使用PHP下载远程文件(2GB)

时间:2012-01-14 13:44:27

标签: php file-upload curl ftp download

我有一个大文件(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);

?>

3 个答案:

答案 0 :(得分:0)

如果您有超时上传文件,可以查看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);

答案 1 :(得分:0)

调用时,set_time_limit()从零重新启动超时计数器。换句话说,如果超时是默认的30秒,并且脚本执行25秒,则进行诸如set_time_limit(20)之类的调用,脚本将在超时之前运行总共45秒。请检查php.ini中的“max_execution_time”指令

答案 2 :(得分:0)

如果可以(取决于执行php文件的位置),可以将max_execution_time更改为更长时间。

现在,我要做的是(仍然,如果你有权利),是在从php文件调用的命令行中完成它。命令行会将结果写入特定文件中,您只需检查该文件的内容即可。

一旦写完结果(就像在linux中一样成功地说“0”),你可以做你想做的事。

在前端,获得下载状态的一点点ajax也很有用!

但与往常一样,这取决于你是否可以运行shell命令。