Timeout bei xinetd

15/11/2007 - 20:39 von Peter Blancke | Report spam
Guten Abend,

in den Dokumentationen zum xinetd finde ich keine Hinweise, wie man
einen Timeout fuer einen Verbindungsaufbau einstellen kann.

Hier laeuft folgender Programmaufruf in /etc/xinetd.d/:

,-
| service port9999
| {
| disable = no
| socket_type = stream
| protocol = tcp
| wait = no
| user = nobody
| env = HOME=/opt/test
| server = /opt/test/testscript.php
| }
`-

Wer sich jetzt auf den Port verbindet, kann die Verbindung beliebig
lange offen stehen lassen. Das PHP-Skript, welches dahinterliegt,
kann -- meinem Wissensstande folgend -- sich leider nicht selbst
abschieszen.

Die zusaetzliche Einbindung des Befehls "timeout" scheitert, weil
ich dessen hier unerwuenschte Ausgabe auf STDOUT bzw. STDERR nicht
unterbinden kann.

Beweis:

~$ timeout 2 > /dev/null 2>&1 sleep 60
Getötet
~$ timeout 2 > /dev/null 2>&1 sleep 60 2>&1
Getötet
~$ timeout 2 > /dev/null 2>&1 sleep 60 > /dev/null 2>&1
Getötet

Das "Getoetet" kriege ich da nicht weg.

Musz der gewuenschte Timeout grundsatzlich vom durch xinetd
aufgerufenen Serverprogramm selbst initiiert werden oder gibt es
fuer xinetd eine Moeglichkeit, bei "Stille" auf der Leitung einen
Verbindungsabbruch zu erzwingen?

Grusz,

Peter Blancke

Hoc est enim verbum meum!
 

Lesen sie die antworten

#1 Georg Klein
20/11/2007 - 22:55 | Warnen spam
Hallo,

Peter Blancke wrote:

Guten Abend,

in den Dokumentationen zum xinetd finde ich keine Hinweise, wie man
einen Timeout fuer einen Verbindungsaufbau einstellen kann.

Hier laeuft folgender Programmaufruf in /etc/xinetd.d/:

,-
| service port9999
| {
| disable = no
| socket_type = stream
| protocol = tcp
| wait = no
| user = nobody
| env = HOME=/opt/test
| server = /opt/test/testscript.php
| }
`-

Wer sich jetzt auf den Port verbindet, kann die Verbindung beliebig
lange offen stehen lassen. Das PHP-Skript, welches dahinterliegt,
kann -- meinem Wissensstande folgend -- sich leider nicht selbst
abschieszen.



Doch, es kann -- wenn Du es richtig progarmmierst. Für das Beenden der
Verbindung ist nicht der xinetd, sondern Dein Programm zustàndig. Ich
kenne nur wenig php, aber finde bei etwas googeln direkt etliche
Code-Beispiele, die Unix-Socket-Programmierung in php demonstrieren:
Umgang mit Signalen, alarms und deren Handling.

Zwei der Links, die sich bei Suche ganz vorn finden:

http://www.devshed.com/c/a/PHP/Sock...-With-PHP/
http://www.linuxformat.co.uk/wiki/i..._functions

Also: wer suchet, der findet.


Gruß, gk

Ähnliche fragen