(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)
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.
El identificador de enlace de la conexión FTP.
La ruta del archivo local (será sobrescrito si el archivo ya existe).
La ruta del archivo remoto.
El modo de transferencia. Debe ser FTP_ASCII o FTP_BINARY.
Devuelve FTP_FAILED o FTP_FINISHED o FTP_MOREDATA.
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_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 deshabilitamos FTP_AUTOSEEK, los primeros 100 bytes de archivo_nuevo serían '\0'.