(PHP 4 >= 4.3.0, PHP 5)
ftp_nb_get — Recupera un archivo desde el servidor FTP y lo escribe en un archivo local (modo no-bloqueo)
ftp_nb_get() recupera un archivo remoto desde el servidor FTP, y lo guarda en un archivo local.
La diferencia entre esta función y ftp_get() es que esta función recupera el archivo de forma asincrónica, 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 (se sobrescribirá 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($my_connection, "test", "README", FTP_BINARY);
while ($ret == FTP_MOREDATA) {
// Haga lo que quiera
echo ".";
// Continuar la descarga...
$ret = ftp_nb_continue($my_connection);
}
if ($ret != FTP_FINISHED) {
echo "Hubo un error al descargar el archivo...";
exit(1);
}
?>
Example #2 Reanudar una descarga con ftp_nb_get()
<?php
// Iniciar
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY,
filesize("test"));
// O: $ret = ftp_nb_get($my_connection, "test", "README",
// FTP_BINARY, FTP_AUTORESUME);
while ($ret == FTP_MOREDATA) {
// Haga lo que quiera
echo ".";
// Continuar la descarga...
$ret = ftp_nb_continue($my_connection);
}
if ($ret != FTP_FINISHED) {
echo "Hubo un error al descargar el archivo...";
exit(1);
}
?>
Example #3 Reanudar una descarga en la posición 100 a un nuevo archivo con ftp_nb_get()
<?php
// Deshabilitar Autoseek
ftp_set_option($my_connection, FTP_AUTOSEEK, false);
// Iniciar
$ret = ftp_nb_get($my_connection, "newfile", "README", FTP_BINARY, 100);
while ($ret == FTP_MOREDATA) {
/* ... */
// Continuar la descarga...
$ret = ftp_nb_continue($my_connection);
}
?>
En el ejemplo anterior, newfile es 100 bytes menor que README en el servidor FTP por eso comenzamos la lectura en la posición 100. Si no hubiesemos deshabilitado FTP_AUTOSEEK, los primeros 100 bytes de newfile serían '\0'.