Saltar al contenido

ftp_nb_fput()

Entendiendo la función de PHP ftp_nb_fput()

La función ftp_nb_fput() es una función integrada de PHP que sube un archivo a un servidor FTP usando el modo no bloqueante. En este artículo, analizaremos la función en detalle y ofreceremos una guía completa para usarla en tus proyectos de PHP.

¿Qué es ftp_nb_fput()?

La función ftp_nb_fput() sube un archivo a un servidor FTP usando el modo no bloqueante. Acepta cuatro parámetros obligatorios y un parámetro opcional:

  1. ftp_stream: el identificador de conexión devuelto por ftp_connect().
  2. remote_file: la ruta del archivo remoto en el servidor FTP.
  3. handle: un puntero de archivo abierto al archivo local.
  4. mode: el modo de transferencia, ya sea FTP_ASCII o FTP_BINARY.
  5. startpos (opcional): la posición en el archivo remoto desde la que se iniciará la subida. El valor predeterminado es 0.

La función devuelve una de las siguientes constantes: FTP_SUCCESS (la subida se completó), FTP_MOREDATA (se necesita leer más datos) o FTP_FAILED (se produjo un error).

Sintaxis de ftp_nb_fput()

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

Sintaxis de ftp_nb_fput()

php
int ftp_nb_fput ( resource $ftp_stream , string $remote_file , resource $handle , int $mode [, int $startpos = 0 ] )

La función toma cuatro parámetros obligatorios (ftp_stream, remote_file, handle y mode) y un parámetro opcional (startpos). El parámetro ftp_stream es el identificador de conexión devuelto por ftp_connect(). El parámetro remote_file es la ruta del archivo remoto en el servidor FTP. El parámetro handle es un puntero de archivo abierto en el sistema de archivos local. El parámetro mode especifica el modo de transferencia, ya sea FTP_ASCII o FTP_BINARY. El parámetro startpos especifica la posición en el archivo remoto desde la que se iniciará la subida. De forma predeterminada, startpos se establece en 0, lo que significa que la subida comenzará desde el inicio del archivo.

Uso de ftp_nb_fput()

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

Uso de ftp_nb_fput()

php
<?php

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

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

// Enable passive mode to prevent transfer issues
ftp_pasv($conn, true);

// Open a file for reading
$handle = fopen('local_file.txt', 'r');

// Initiate an asynchronous FTP operation
$res = ftp_nb_fput($conn, 'remote_file.txt', $handle, FTP_BINARY);

// Continue the asynchronous FTP operation
while ($res == FTP_MOREDATA) {
    $res = ftp_nb_continue($conn);
}

// Check for errors
if ($res != FTP_FAILED && $res != FTP_SUCCESS) {
    echo "FTP upload failed.\n";
}

// Close the file
fclose($handle);

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

En este ejemplo, establecemos una conexión con el servidor FTP usando la función ftp_connect(). Luego iniciamos sesión usando nuestras credenciales FTP con la función ftp_login(). Habilitamos el modo pasivo con ftp_pasv() para evitar problemas comunes de transferencia. Abrimos un archivo para lectura usando la función fopen() e iniciamos una operación FTP asíncrona usando la función ftp_nb_fput(). Continuamos la operación usando la función ftp_nb_continue() y cerramos el archivo y la conexión FTP.

Manejo de errores en ftp_nb_fput()

Es importante manejar los errores correctamente al usar la función ftp_nb_fput(). La función devuelve constantes específicas en lugar de un valor booleano, así que debes comprobar FTP_FAILED para detectar errores. Aquí tienes un ejemplo de cómo manejar errores:

Manejo de errores en ftp_nb_fput()

php
<?php

// Assume $conn is already established and logged in
$handle = fopen('local_file.txt', 'r');
$res = ftp_nb_fput($conn, 'remote_file.txt', $handle, FTP_BINARY);

if ($res == FTP_FAILED) {
    echo "Failed to initiate upload.\n";
}

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

if ($res == FTP_FAILED) {
    echo "Failed to complete upload.\n";
}

fclose($handle);
ftp_close($conn);

Al manejar los errores de forma adecuada y comprobar las constantes de retorno tanto de ftp_nb_fput() como de ftp_nb_continue(), puedes garantizar el éxito de tus operaciones FTP.

Conclusión

En conclusión, la función ftp_nb_fput() es una herramienta útil para subir archivos a un servidor FTP usando el modo no bloqueante. Te permite continuar con otras operaciones mientras esperas a que se complete la subida FTP. Al comprender cómo usar esta función, puedes transferir archivos de forma eficiente entre tu máquina local y un servidor FTP, mejorando el rendimiento y la productividad de tus proyectos de PHP. Recuerda manejar siempre los errores de forma adecuada para garantizar el éxito de tus operaciones FTP.

Práctica

What does the ftp_nb_fput() function in PHP do?

¿Te resulta útil?

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