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