SunshinePHP Developer Conference 2015

socket_set_nonblock

(PHP 4 >= 4.1.0, PHP 5)

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

Description

bool socket_set_nonblock ( resource $socket )

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 ressource de socket valide, créée par la fonction socket_create() ou la fonction socket_accept().

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

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 add a note

User Contributed Notes 1 note

up
1
kpobococ at gmail dot com
5 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