ftp_nb_get

(PHP 4 >= 4.3.0, PHP 5)

ftp_nb_get -- Obtém um arquivo do servidor FTP e salva em um arquivo local(sem bloquear)

Descrição

int ftp_nb_get ( resource ftp_stream, string arquivo_local, string arquivo_remoto, int modo [, int resumepos] )

ftp_nb_get() obtém o arquivo_remoto apartir do servidor FTP e o salva em arquivo_local no computador local. O modo de transferencia especificado deve ser FTP_ASCII ou FTP_BINARY. A diferença entre esta função e a função ftp_get() é que esta função obtém o arquivo sem sincronia, então o seu programa pode realizar outras operações enquando o arquivo esta sendo obtido.

Retorna FTP_FAILED, FTP_FINISHED, ou FTP_MOREDATA.

Exemplo 1. ftp_nb_get() example

<?php

// Inicia o download
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY);
while (
$ret == FTP_MOREDATA) {

   
// Faça o que quizer
   
echo ".";

   
// Continue o download...
   
$ret = ftp_nb_continue($my_connection);
}
if (
$ret != FTP_FINISHED) {
   echo
"Houve um erro no download do arquivo...";
   exit(
1);
}
?>

Exemplo 2. Continuando o download com ftp_nb_get()

<?php

// Começa
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY,
                      
filesize("test"));
// OU: $ret = ftp_nb_get($my_connection, "test", "README",
//                           FTP_BINARY, FTP_AUTORESUME);
while ($ret == FTP_MOREDATA) {

   
// Faça o que quizer
   
echo ".";

   
// Continue o download...
   
$ret = ftp_nb_continue($my_connection);
}
if (
$ret != FTP_FINISHED) {
   echo
"Houve um erro no download do arquivo...";
   exit(
1);
}
?>

Exemplo 3. Continuando um download na posição 100 para um novo arquivo com ftp_nb_get()

<?php

// Desabilita o Autoseek
ftp_set_option($my_connection, FTP_AUTOSEEK, FALSE);

// Começa
$ret = ftp_nb_get($my_connection, "novo_arquivo", "LEIAME", FTP_BINARY, 100);
while (
$ret == FTP_MOREDATA) {

    
/* ... */

   // Continue o download...
   
$ret = ftp_nb_continue($my_connection);
}
?>

No exemplo acima, "novo_arquivo" é 100 bytes menor do que "LEIAME" que esta no servidor FTP porque nós começamos a ler a partir da posição 100. Se nós não tivessemos desabilitado FTP_AUTOSEEK, os primeiros 100 bytes de "novo_arquivo" seriam '\0'.

Veja também ftp_nb_fget(), ftp_nb_continue(), ftp_get() e ftp_fget().