Forum und email

ftp_nb_get

(PHP 4 >= 4.3.0, PHP 5)

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 un archivo remoto desde el servidor FTP, y lo almacena en un archivo local.

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.

Lista de parámetros

secuencia_ftp

El identificador de enlace de la conexión FTP.

archivo_local

La ruta del archivo local (será sobrescrito si el archivo ya existe).

archivo_remoto

La ruta del archivo remoto.

modo

El modo de transferencia. Debe ser FTP_ASCII o FTP_BINARY.

pos_continuacion

Valores retornados

Devuelve FTP_FAILED o FTP_FINISHED o FTP_MOREDATA.

Ejemplos

Example#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);
}
?>

Example#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);
}
?>

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

<?php

// Deshabilitar Autoseek
ftp_set_option($mi_conexionFTP_AUTOSEEKFALSE);

// Iniciar
$ret ftp_nb_get($mi_conexion"archivo_nuevo""README"FTP_BINARY100);
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 deshabilitamos FTP_AUTOSEEK, los primeros 100 bytes de archivo_nuevo serían '\0'.