PHP 8.5.0 Alpha 1 available for testing

socket_set_nonblock

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

socket_set_nonblockSelecciona el modo no bloqueante de un puntero de fichero

Descripción

socket_set_nonblock(Socket $socket): bool

La función socket_set_nonblock() configura la opción O_NONBLOCK para el socket especificado por el argumento socket.

Cuando una operación (por ejemplo, recepción, envío, conexión, aceptación, etc.) se realiza sobre un socket no bloqueante, el script no se pone en pausa mientras recibe una señal. En su lugar, si la operación debe resultar en un bloqueo, la función llamada fallará.

Parámetros

socket

Una instancia de Socket creada por socket_create() o socket_accept().

Valores devueltos

Devuelve true en caso de éxito o false en caso de error.

Historial de cambios

Versión Descripción
8.0.0 socket is a Socket instance now; previously, it was a resource.

Ejemplos

Ejemplo #1 Ejemplo con socket_set_nonblock()

<?php
$socket
= socket_create_listen(1223);
socket_set_nonblock($socket);

socket_accept($socket);
?>

Este ejemplo crea un socket escuchando todas las interfaces en el puerto 1223 y define el socket en modo O_NONBLOCK. socket_accept() fallará inmediatamente si hay una conexión pendiente exactamente en ese momento.

Ver también

add a note

User Contributed Notes 1 note

up
3
kpobococ at gmail dot com
15 years ago
Beware, when using this function within a loop (i.e. a demon with a socket). The socket_accept(), for example, emits a warning each time there is no incoming connection available to be read. My php error log file got huge in a matter of seconds, eventually crashing the server.

Of course, i used the @ before the function to take care of that problem.

[EDITOR: One can (and should) use socket_select to detect a new connection on a socket (it's a "readable" event)]
To Top