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)]
socket_set_nonblock
(PHP 4 >= 4.1.0, PHP 5)
socket_set_nonblock — Sélectionne le mode non bloquant d'un pointeur de fichier
Description
$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
- socket_set_block() - Met le socket en mode bloquant
- socket_set_option() - Modifie les options de socket
