Saltar al contenido

Función socket_get_status() de PHP: Todo lo que necesitas saber

Como desarrollador de PHP, es posible que necesites verificar el estado de un socket para asegurarte de que está abierto y listo para su uso. La función socket_get_status() es una función integrada de PHP que recupera esta información.

¿Qué es la función socket_get_status()?

La función socket_get_status() recupera el estado de un recurso de flujo. Ten en cuenta que está diseñada para recursos de flujo (por ejemplo, de fsockopen() o stream_socket_client()) en lugar de recursos de socket sin procesar de socket_create(), lo que puede generar advertencias de desuso en PHP 8+.

Cómo usar la función socket_get_status()

Usar la función socket_get_status() es sencillo. A continuación se muestra la sintaxis de la función:

La sintaxis de PHP de la función socket_get_status()

php
socket_get_status(resource $socket);

La función acepta un parámetro:

  • $socket: El recurso de flujo del que se desea obtener el estado.

A continuación se muestra un ejemplo de cómo usar la función socket_get_status() para obtener el estado de un socket:

¿Cómo usar la función socket_get_status()?

php
<?php

$socket = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$socket) {
    die("Error: $errstr ($errno)");
}

$status = socket_get_status($socket);
if ($status["eof"]) {
    echo "Socket closed";
} else {
    echo "Socket open";
}

fclose($socket);
?>

En este ejemplo, usamos fsockopen() para crear un recurso de flujo, luego verificamos que se haya creado correctamente antes de comprobar su estado. Comprobamos si el campo eof es verdadero, lo que indica que el flujo ha llegado al final, o falso, lo que indica que sigue activo.

La función devuelve un array asociativo con las siguientes claves:

  • wrappable: Booleano que indica si el flujo puede ser envolvente.
  • stream_type: Cadena que describe el tipo de flujo (por ejemplo, tcp_socket).
  • mode: Cadena que indica el modo de acceso (por ejemplo, r, w).
  • unread_bytes: Entero que representa el número de bytes sin leer en el búfer del flujo.
  • timed_out: Booleano que indica si el flujo ha agotado el tiempo de espera.
  • eof: Booleano que indica si se ha alcanzado el final del flujo.

Conclusión

La función socket_get_status() es una herramienta útil para verificar el estado de un socket en tu aplicación web PHP. Al comprender la sintaxis, los valores devueltos y los tipos de recursos adecuados, puedes monitorear fácilmente los estados de los sockets para garantizar una comunicación de red confiable. Esperamos que este artículo haya sido informativo y útil para comprender la función socket_get_status() en PHP.

Práctica

¿Cuál es el propósito de la función socket_get_status() en PHP?

¿Te resulta útil?

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