(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
ftp_nb_get — Lee un fichero en un servidor FTP y lo escribe en un fichero (no bloqueante)
$ftp,$local_filename,$remote_filename,$mode = FTP_BINARY,$offset = 0
ftp_nb_get() lee el fichero remote_filename
presente en el servidor FTP ftp y lo guarda
en un fichero local.
La diferencia entre esta función y ftp_fget() es que esta función puede leer el fichero de manera asíncrona, para que el programa realice otras tareas mientras el fichero se descarga.
ftpUna instancia de FTP\Connection.
local_filenameLa ruta hacia el fichero local (será sobrescrito si el fichero ya existe).
remote_filenameLa ruta hacia el fichero remoto.
mode
El modo de transferencia. Debe ser FTP_ASCII o
FTP_BINARY.
offsetLa posición en el fichero remoto a partir de la cual debe comenzar la descarga.
Devuelve FTP_FAILED o FTP_FINISHED
o FTP_MOREDATA, o false en caso de fallo al abrir el fichero local.
| Versión | Descripción |
|---|---|
| 8.1.0 |
El parámetro ftp ahora espera una instancia de
FTP\Connection ; anteriormente, se esperaba un resource.
|
| 7.3.0 |
El argumento mode ahora es opcional. Anteriormente era obligatorio.
|
Ejemplo #1 Ejemplo con ftp_nb_get()
<?php
// Inicia la descarga
$ret = ftp_nb_get($ftp, "test", "README", FTP_BINARY);
while ($ret == FTP_MOREDATA) {
// Realice lo que desee...
echo ".";
// Continúa la descarga...
$ret = ftp_nb_continue($ftp);
}
if ($ret != FTP_FINISHED) {
echo "Hubo un problema durante la descarga...";
exit(1);
}
?>Ejemplo #2 Reanudación de una descarga con ftp_nb_get()
<?php
// Inicializa
$ret = ftp_nb_get($ftp, "test", "README", FTP_BINARY,
filesize("test"));
// O: $ret = ftp_nb_get($ftp, "test", "README",
// FTP_BINARY, FTP_AUTORESUME);
while ($ret == FTP_MOREDATA) {
// Realice lo que desee...
echo ".";
// Continúa la descarga...
$ret = ftp_nb_continue($ftp);
}
if ($ret != FTP_FINISHED) {
echo "Hubo un problema durante la descarga del fichero...";
exit(1);
}
?>Ejemplo #3 Reanudación de una descarga desde la posición 100 en un nuevo fichero con ftp_nb_get()
<?php
// Desactiva AutoSeek
ftp_set_option($ftp, FTP_AUTOSEEK, false);
// Inicialización
$ret = ftp_nb_get($ftp, "newfile", "README", FTP_BINARY, 100);
while ($ret == FTP_MOREDATA) {
/* ... */
// Continúa la descarga...
$ret = ftp_nb_continue($ftp);
}
?>
En el ejemplo anterior, newfile es 100
bytes más pequeño que README en el sitio FTP, ya que
comenzamos a leer desde el offset 100. Si no hubiéramos desactivado la opción FTP_AUTOSEEK, los primeros
100 bytes del fichero newfile serían rellenados
con '\0'.