我有一个PHP脚本,可以从我拥有的远程服务器下载带有直接链接的文件。有时大文件(约500-600 MB),有时小文件(约50-100 MB)。
脚本中的一些代码:
$links[0]="file_1";
$links[0]="file_2";
$links[0]="file_3";
for($i=0;$i<count($links);$i++){
$file_link=download_file($links[$i]); //this function downloads the file with curl and returns the path to the downloaded file in local server
echo "Download complete";
rename($file_link,"some other_path/..."); //this moves the downloaded file to some other location
echo "Downloaded file moved";
echo "Download complete";
}
我的问题是,如果我从Web浏览器下载大文件并运行脚本,则需要5-10分钟才能完成,并且脚本回显到“下载完成”,然后它完全消失。我总是发现在脚本死之前下载的文件是100%下载的。
另一方面,如果我从网络浏览器下载50-100MB的小文件或从命令shell运行脚本,则根本不会发生此问题,并且脚本完全完成。
我正在使用自己的VPS,并且在服务器中没有任何时间限制。没有致命错误或内存过载问题。
我还使用ssh2_sftp
从远程服务器复制文件。但是当我从网络浏览器运行时同样的问题。它总是下载文件,执行下一行然后死!很奇怪!
我该怎么做才能克服这个问题?
答案 0 :(得分:0)
为确保您可以下载较大的文件,您必须确保存在:
根据你对ssh2_sftp所说的话(假设你是通过php运行它)你的问题是第二个问题。检查您的错误(-logs)以查找是否真的是您的错误。如果是这样,你只需增加你的settings / php.ini中的最大执行时间,那就应该修复它。
注意:我建议你不要让PHP处理这些大文件。调用一些程序(通过system()
或exec()
),它会为你做下载,因为PHP仍然有垃圾收集问题。