PHP 8.4.1 Released!

socket_set_nonblock

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

socket_set_nonblockSélectionne le mode non bloquant d'un pointeur de fichier

Description

socket_set_nonblock(Socket $socket): bool

La fonction socket_set_nonblock() configure l'option O_NONBLOCK pour le socket spécifié par le paramètre socket.

Lorsqu'une opération (e.g. réception, envoie, connexion, acceptation, ...) est effectuée sur un socket non-bloquant, le script ne se met pas en pause tant qu'elle reçoit un signal. Au lieu de cela, si l'opération doit résulter en un blocage, la fonction appelée échouera.

Liste de paramètres

socket

Une instance de Socket créée par socket_create() ou socket_accept().

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Historique

Version Description
8.0.0 socket est désormais une instance de Socket ; auparavant, c'était une resource.

Exemples

Exemple #1 Exemple avec socket_set_nonblock()

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

socket_accept($socket);
?>

Cet exemple crée un socket écoutant toutes les interfaces sur port 1223 et définit le socket en mode O_NONBLOCK. socket_accept() échouera immédiatement s'il y a une connexion en attente exactement à ce moment là.

Voir aussi

add a note

User Contributed Notes 1 note

up
5
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