perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 27
Click for quality!




11.02.2012 / 17:59

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragWie man am Besten einen Daemon schreibt
Seitenanfang
Hallo,

zunächst will ich sagen, dass ich hier keine Syntax oder sonstigen semantischen Schnick-Schnack diskutieren will :)

Ich arbeite an einem Projekt, welches über Netzwerk kommuniziert.
Meine Frage bezieht sich eher auf die Art, wie man so etwas am Besten entwickelt.

Auf einer Machine läuft ein Daemon, dieser Daemon wartet ständig auf eine Anfrage aus dem Netzwerk. Kommt etwas, arbeitet der Daemon etwas ab und schickt etwas zurück. Was das im Detail ist, ist nicht so wichtig.

Folgendes:
Dieser Daemon existiert bereits hat aber ein Problem: Nach einer gewissen Zeit (ein paar Tage) wird er langsam. Nach etwas mehr Zeit reagiert er dann gar nicht mehr. (Der Prozess selbst läuft noch)

Er arbeitet auf folgende Weise:
1. startet iThread


my $thr = threads->create("receive");
$thr->detach();

dieser öffnet (in einer endlosschleife) eine socket und hört ständig auf sie .

while(<$new_sock>) {
$msg=$_;
}

Wenn etwas kommt, schreibt er etwas dementsprechendes in ein Array namens Buffer rein, schließt dann die socket und rennt erneut seine Schleife durch. Dieses Array wird von allen Threads geshared. (threads::shared).

2. Der eigentliche Prozess rödelt ebenfalls ständig eine Endlosschleife durch.


if(@BUFFER > 0){
# do something
open socket
sending something
close socket
}

Der Code ist gut lesbar dokumentiert und ich weiß ja auch, was der Daemon macht, allerdings habe ich große Probleme mit der Wartung, da ich einfach nicht weiß, warum er langsam wird und dann irgendwann stehen bleibt :/

Ich hoffe ihr könnt mir helfen. Ich habe zwar diverse Tutorials gefunden, wie man Daemons, Sockets, IThreads implementiert, aber nie etwas alles in einem :)

Warum iThreads ? Tjo ... (die sind eben neu und erst ab 5.8.0 verfügbar). Aber bevor ich jetzt versuche daran zu bohren, würde ich gern wissen, ob das Konzept generell so ist, wie man Net-Daemons schreiben sollte.

Ich wäre für Hilfe gern Dankbar und vielen Dank im Vorraus :)

MfG, Clemens

Datum: 09.03.2006-10:33

Beitragre: Wie man am Besten einen Daemon schreibt
Seitenanfang
Hi,

für mich liest sich das in etwa so:
1. Verbindungen annehmen, Daten in @BUFFER schreiben.
2. Verbindung herstellen, Daten aus @BUFFER schreiben.
3. @BUFFER wird immer größer, daemon immer langsamer.

Löscht Du die geschriebenen Daten aus @BUFFER wieder?

Was sagt den ps bezüglich des Prozsss-Status? Läuft der (R), schläft er (S), wartet er auf irgendwas (D) oder ist er weg geknallt (T) bzw. (Z)?

-uw

Datum: 10.03.2006-01:33

-






-
-