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
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_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'.