Saltar al contenido

ftp_nb_get()

Comprender la función PHP ftp_nb_get()

La función ftp_nb_get() es una función integrada de PHP que descarga un archivo desde un servidor FTP utilizando el modo no bloqueante. Este artículo proporciona una guía completa sobre cómo utilizarla en tus proyectos PHP.

¿Qué es ftp_nb_get()?

La función ftp_nb_get() inicia una descarga de archivo asíncrona. Requiere cuatro parámetros:

  1. ftp_stream: El identificador de conexión devuelto por ftp_connect().
  2. local_file: La ruta del archivo local donde se guardará el archivo descargado.
  3. remote_file: La ruta del archivo remoto en el servidor FTP.
  4. mode: El modo de transferencia, ya sea FTP_ASCII o FTP_BINARY.

También acepta un quinto parámetro opcional, resumepos, que especifica la posición en el archivo remoto desde donde comenzar la descarga (el valor predeterminado es 0).

La función devuelve una de tres constantes: FTP_FINISHED en caso de éxito, FTP_MOREDATA si la transferencia aún está en curso, o FTP_FAILED si ocurrió un error.

Sintaxis de ftp_nb_get()

La sintaxis de la función ftp_nb_get() es la siguiente:

Sintaxis de ftp_nb_get()

php
int ftp_nb_get ( resource $ftp_stream , string $local_file , string $remote_file , int $mode [, int $resumepos = 0 ] )

La función ftp_nb_get() toma cuatro parámetros obligatorios (ftp_stream, local_file, remote_file y mode) y un parámetro opcional (resumepos). El parámetro ftp_stream es el identificador de conexión devuelto por ftp_connect(). El parámetro local_file es la ruta del archivo local donde se guardará el archivo descargado. El parámetro remote_file es la ruta del archivo remoto en el servidor FTP. El parámetro mode especifica el modo de transferencia, ya sea FTP_ASCII o FTP_BINARY. El parámetro resumepos especifica la posición en el archivo remoto desde donde comenzar la descarga. Por defecto, resumepos se establece en 0, lo que significa que la descarga comenzará desde el inicio del archivo.

Uso de ftp_nb_get()

Para utilizar la función ftp_nb_get(), primero debes establecer una conexión con el servidor FTP usando ftp_connect(). Aquí tienes un ejemplo:

Uso de ftp_nb_get()

php
<?php

// Set up an FTP connection
$conn = ftp_connect('ftp.example.com');

// Login with your FTP credentials
ftp_login($conn, 'username', 'password');

// Initiate an asynchronous FTP operation
$result = ftp_nb_get($conn, 'local_file.txt', 'remote_file.txt', FTP_BINARY);

if ($result === FTP_FAILED) {
    echo "Failed to download file from remote server.\n";
} else {
    // Continue the asynchronous FTP operation
    while ($result === FTP_MOREDATA) {
        // Do something else while waiting for the FTP operation to complete
        $result = ftp_nb_continue($conn);
    }
}

// Close the FTP connection
ftp_close($conn);

En este ejemplo, establecemos una conexión con el servidor FTP usando ftp_connect(). Luego iniciamos sesión con nuestras credenciales FTP usando ftp_login(). Iniciamos una operación FTP asíncrona usando ftp_nb_get(). Continuamos la operación usando ftp_nb_continue() dentro de un bucle que verifica FTP_MOREDATA, y finalmente cerramos la conexión FTP.

Manejo de errores en ftp_nb_get()

Es importante manejar los errores correctamente al utilizar la función ftp_nb_get(). La función devuelve FTP_FAILED si la descarga no fue exitosa. Aquí tienes un ejemplo de cómo manejar los errores:

Manejo de errores en ftp_nb_get()

php
<?php

$result = ftp_nb_get($conn, 'local_file.txt', 'remote_file.txt', FTP_BINARY);

if ($result === FTP_FAILED) {
    echo "Failed to download file from remote server.\n";
}

while ($result === FTP_MOREDATA) {
    $result = ftp_nb_continue($conn);
}

ftp_close($conn);

Al manejar los errores de manera adecuada y verificar el valor de retorno contra FTP_FAILED, puedes garantizar el éxito de tus operaciones FTP utilizando la función ftp_nb_get().

Conclusión

En conclusión, la función ftp_nb_get() es una herramienta útil para descargar archivos desde un servidor FTP utilizando el modo no bloqueante.

Práctica

¿Cuál es la función del comando PHP FTP_NB_CONTINUE?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.