php的ftp怎么代理访问,利用PHP登陆FTP实现服务器资源同步 | Lancer's Blog

由于经常操作国外服务器,深刻的感受是速度比较低,有的时候可以说非常低。

最近需要两台服务器做下载数据分流。但是面临着一个问题:同时去上传两个资源到两台服务器明显是一件比较麻烦的事,而且速度很慢,花时间又多。所以想了一个办法,将资源上传到其中一台服务器,然后直接从另一台服务器登入这台服务器下载资源并拷贝到同样的目录下。

于是乎找了很多方法,其实最快的就是用linux上的shell方式,直接get文件就可以同步数据,但是可能服务的一些问题,并没有办法这么顺利,不过在php中的确找到了FTP相关的函数

resource ftp_connect ( string $host [, int $port [, int $timeout ]] )

bool ftp_login ( resource $ftp_stream , string $username , string $password )

bool ftp_get ( resource $ftp_stream , string $local_file , string $remote_file , int $mode [, int $resumepos ] )

利用这三个函数足以实现同步资源。因此我设置了两个函数。//FTP连接

function loginFtp() {

// set up basic connection

$ftp_server = 'serverName Or Ip';

$ftp_user = 'username';

$ftp_pass = 'password';

// connect ftp

$ftp_conn = ftp_connect($ftp_sever);

// login with username and password

$login_result = ftp_login($ftp_conn, $ftp_user, $ftp_pass);

// check connection

if ( !$ftp_conn || ! $login_result) {

die("FTP connection has failed!");

}

return $ftp_conn;

}

//同步文件

function synchronize($server_file, $ftpconn) {

$local_file = ltrim($server_file, '/');

$local_file = str_replace('pub/', '', $local_file);

//目录不存在 重新创建

$folder = strrpos($local_file, '/');

if ($folder !== FALSE) {

$local_folder = substr($local_file, 0, $folder) . '/';

}

if ( ! is_dir($local_folder) ) {

mkdir($local_folder, 0775, TRUE);

}

// download the file

$rs = ftp_get($ftpconn, $local_file, $server_file, FTP_BINARY);

if ( $rs ) {

if ( ! file_exists($local_file) )

echo "Successfully written to {$local_file}.
";

else

echo "Successfully rewritten to {$local_file}.
";

} else {

echo "There was a problem on {$local_file}.
";

}

}

//实现同步

$conn = loginFtp();

$file = '/pub/files/msnlite.exe';

synchronize($file, $conn);

// close the FTP stream

ftp_close($conn);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值