我有一个大文件(2 2GB),我想用PHP将它从服务器B下载到服务器A。
我用PHP尝试了FTP和CURL,但没有成功。即使I set_time_limit()的值为0,它也会返回超时请求错误。
下面是我的代码:
<?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);
?>发布于 2012-01-14 21:52:40
如果您在上传文件时遇到超时,您可以查看一下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);发布于 2012-01-14 22:20:46
当被调用时,set_time_limit()从零开始重新启动超时计数器。换句话说,如果超时是默认的30秒,并且在脚本执行25秒时调用了set_time_limit(20),那么在超时之前脚本将总共运行45秒。请检查php.ini中的"max_execution_time“指令
发布于 2012-01-14 22:35:30
如果可以(取决于执行php文件的位置),您可以将max_execution_time改得更长。
现在,我要做的是(仍然,如果你有权限的话),在命令行中调用php文件。命令行会将结果写到一个特定的文件中,您所要做的就是检查该文件的内容。
一旦写好了结果(在linux中总是说"0“表示成功),你就可以做你想做的事情了。
在前端,使用一些ajax来获取下载状态也是很有用的!
但一如既往,这取决于您是否可以运行shell命令。
https://stackoverflow.com/questions/8862590
复制相似问题