繁体   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