HI @all,
ich möchte mir ein kleines PHP-Skript zusammenbauen, welches die folgenden Funktionen hat:
- Einen UDP-Broadcast verschicken
- Einen TCP-Socket aufbauen und darauf lauschen
- Wenn nach eine bestimmten Zeit keine Verbindung kam, den Socket wieder schließen und das Skript beenden
- Wenn doch in der Zwischenzeit eine Verbindung kam, dann eine Datei anlegen und dann das Skript beenden
Die ersten beiden Punkte habe ich schon fertig, nur habe ich keine Ahnung, wie mal einen Timeout bei Sockets mit PHP hinbekommt. Als Idee hatte ich, einen Fork zu erstellen und den nach einem Timeout einfach abzuschießen, aber Forks gehen mit Windows nicht.
Als Anforderung: Das Skript sollte möglichst unter beiden Systemen laufen: Windows und Ubuntu.
PHP-Quellcode:
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
socket_bind($socket, "127.0.0.1", 4567);
socket_listen($socket,1);
$dataSock = socket_accept($socket);
echo socket_read($dataSock, 1024, PHP_NORMAL_READ);
// close sockets
socket_close($socket);
?>
Das ist der Code, der auf die Verbindung wartet.
So: Wie sage ich jetzt PHP, dass es einen Timeout gibt?
Bernhard