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
int
ftp_nb_get ( resource secuencia_ftp, string archivo_local, string archivo_remoto, int modo [, int pos_continuacion] )
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
Ejemplo 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); } ?>
|
|
Ejemplo 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); } ?>
|
|
Ejemplo 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'.