PHP Doku:: Setzt den nonblocking-Modus für den Datei-Deskriptor fd - function.socket-set-nonblock.html

Verlauf / Chronik / History: (50) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzSonstige DiensteSocketsSocket-Funktionensocket_set_nonblock

Ein Service von Reinhard Neidl - Webprogrammierung.

Socket-Funktionen

<<socket_set_block

socket_set_option>>

socket_set_nonblock

(PHP 4 >= 4.1.0, PHP 5)

socket_set_nonblockSetzt den nonblocking-Modus für den Datei-Deskriptor fd

Beschreibung

bool socket_set_nonblock ( resource $socket )

Die Funktion socket_set_nonblock() setzt das Flag O_NONBLOCK für den Socket socket.

Wenn eine Operation (etwa empfangen, senden, verbinden, akzeptieren, ...) an einem nicht-blockierenden Socket ausgeführt wird, wird die Ausführung des Skripts so lange nicht unterbrochen, bis es ein Signal erhält oder die Operation ausgeführt ist. Wenn allerdings die Operation zu einer Blockierung führen würde, schlägt die aufgerufene Funktion fehl.

Parameter-Liste

socket

Ein gültiger Socket-Deskriptor, der von socket_create() oder socket_accept() erzeugt wurde.

Rückgabewerte

Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.

Beispiele

Beispiel #1 socket_set_nonblock() Beispiel

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

socket_accept($socket);
?>

In diesem Beispiel wird ein Socket für alle Schnittstellen erzeugt, der den Port 1223 abhört und der in den O_NONBLOCK-Modus versetzt wird. socket_accept() schlägt sofort fehl, es sei denn, es gibt exakt in diesem Moment eine wartende Verbindung.

Siehe auch


Ein BenutzerBeitrag:
- Beiträge aktualisieren...
kpobococ at gmail dot com
11.09.2009 16:46
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.



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)