(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.
ftp
An FTP\Connection instance.
local_filename
La ruta hacia el fichero local (será sobrescrito si el fichero ya existe).
remote_filename
La ruta hacia el fichero remoto.
mode
El modo de transferencia. Debe ser FTP_ASCII
o
FTP_BINARY
.
offset
La 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 |
The ftp parameter expects an FTP\Connection
instance now; previously, a recurso was expected.
|
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'
.