ftp_nb_get

(PHP 4 >= 4.3.0)

ftp_nb_get -- Recupera un archivo desde el servidor FTP y lo escribe sobre un archivo local (modo no-bloqueo)

Descripción

int ftp_nb_get ( resource secuencia_ftp, string archivo_local, string archivo_remoto, int modo [, int pos_continuacion])

ftp_nb_get() recupera el archivo_remoto desde el servidor FTP, y lo guarda localmente en archivo_local. El modo de transferencia especificado debe ser FTP_ASCII o FTP_BINARY.La diferencia entre ésta función y ftp_get() es que ésta función recupera el archivo asincrónicamente, de modo que su programa puede realizar otras operaciones mientras el archivo está siendo descargado.

Devuelve FTP_FAILED, FTP_FINISHED, o FTP_MOREDATA.

Ejemplo 1. Ejemplo de ftp_nb_get()

<?php

// Iniciar la descarga
$ret = ftp_nb_get($mi_conexion, "test", "README", FTP_BINARY);
while (
$ret == FTP_MOREDATA) {
   
   
// Haga lo que quiera
   
echo ".";

   
// Continuar la descarga...
   
$ret = ftp_nb_continue($mi_conexion);
}
if (
$ret != FTP_FINISHED) {
   echo
"Hubo un error descargando el archivo...";
   exit(
1);
}
?>

Ejemplo 2. Reanudando una descarga con ftp_nb_get()

<?php

// Iniciar
$ret = ftp_nb_get($mi_conexion, "test", "README", FTP_BINARY,
                  
filesize("test"));

// O: $ret = ftp_nb_get($mi_conexion, "test", "README",
//                      FTP_BINARY, FTP_AUTORESUME);
while ($ret == FTP_MOREDATA) {
   
   
// Haga lo que quiera
   
echo ".";

   
// Continuar descargando...
   
$ret = ftp_nb_continue($mi_conexion);
}
if (
$ret != FTP_FINISHED) {
   echo
"Hubo un error descargando el archivo...";
   exit(
1);
}
?>

Ejemplo 3. Reanudar una descarga en la posición 100 sobre un archivo nuevo con ftp_nb_get()

<?php

// Deshabilitar Autoseek
ftp_set_option($mi_conexion, FTP_AUTOSEEK, FALSE);

// Iniciar
$ret = ftp_nb_get($mi_conexion, "archivo_nuevo", "README", FTP_BINARY, 100);
while (
$ret == FTP_MOREDATA) {

   
/* ... */
   
   // Continuar descarga...
   
$ret = ftp_nb_continue($mi_conexion);
}
?>

En el ejemplo anterior, "archivo_nuevo" es 100 bytes más pequeña que "README" en el servidor FTP, ya que comenzamos la lectura en la posición 100. Si no hemos deshabilitado FTP_AUTOSEEK, los primeros 100 bytes de "archivo_nuevo" serán '\0'.

Vea también ftp_nb_fget(), ftp_nb_continue(), ftp_get(), y ftp_fget().