FTP remoto de servidor para servidor com PHP
Neste artigo apresento os testes que fiz usando os recursos de FTP do PHP, avaliei e debuguei uma classe que encontrei no PHPClasses.org. Esta facilidade demonstra a riqueza de recursos que o PHP nos oferece.
Procurando a solução
Após alguns dias de pesquisa, principalmente na php.net (sem exemplo de como fazer), elaborei e testei uma função que está
tão fácil e quase ninguém conhece.
Com ela pode-se transferir remotamente arquivos de um diretório do seu servidor local para digamos, o ftp.kit.net, hpg, geocities ou seu novo host!
Constatei que do servidor que hospedo (2Assembler.com) para o ftp.br.geocities.com (as paginas do Yahoo), a transferência de 24 arquivos de imagens durou fantásticos 3 segundos, mas a mesma pode demorar até 2 minutos e meio como foi o caso para o hpg, ou não fazer a conexão de jeito algum como me aconteceu para o ftp.kit.net usando o mesmo servidor. Utilizando outros, funcionou normalmente.
O segredo para isso é apenas abrir o arquivo que se deseja enviar pelo método fopen($file,'r') no seu servidor, abrir uma conexão ftp_connect() e transferir com ftp_fput().
Abaixo a função (que adicionei à classe mencionada):
Com ela pode-se transferir remotamente arquivos de um diretório do seu servidor local para digamos, o ftp.kit.net, hpg, geocities ou seu novo host!
Constatei que do servidor que hospedo (2Assembler.com) para o ftp.br.geocities.com (as paginas do Yahoo), a transferência de 24 arquivos de imagens durou fantásticos 3 segundos, mas a mesma pode demorar até 2 minutos e meio como foi o caso para o hpg, ou não fazer a conexão de jeito algum como me aconteceu para o ftp.kit.net usando o mesmo servidor. Utilizando outros, funcionou normalmente.
O segredo para isso é apenas abrir o arquivo que se deseja enviar pelo método fopen($file,'r') no seu servidor, abrir uma conexão ftp_connect() e transferir com ftp_fput().
Abaixo a função (que adicionei à classe mencionada):
//upload file from server to server (BobFrank)
function srv2srv($from,$to){
$from_fp = fopen($from,"r");
if(!$from_fp){
return false;
}
$this->FTP_MODE=="FTP_BINARY" ? $mode=FTP_BINARY : $mode=FTP_ASCII;
if(!@ftp_fput($this->con_id, $to, $from_fp, $mode)){
$this->error("Cannot send file<b>"".$from." -> ".$to.""</b>");
return false;
}
return true;
}
function srv2srv($from,$to){
$from_fp = fopen($from,"r");
if(!$from_fp){
return false;
}
$this->FTP_MODE=="FTP_BINARY" ? $mode=FTP_BINARY : $mode=FTP_ASCII;
if(!@ftp_fput($this->con_id, $to, $from_fp, $mode)){
$this->error("Cannot send file<b>"".$from." -> ".$to.""</b>");
return false;
}
return true;
}
Esse livro PHP Programming é um ícone, foi ele que me introduziu nesta belíssima linguagem também, muito bom.