CGI lange laufen lassen !



  • Hi,
    Ich will ein CGI Skript unendlich lange laufen lassen !
    Was muss ich tuen damit es funktioniert ?
    Habe den Exklusiv Server von 1und1 und die sagen: Keine Prozess Limits oder Laufzeit limit...

    Also sollte ein CGI Skript unendlich laufen...
    Wie schaff ich es ?

    Mein CGI Skript klappt zwar, aber sobald es 60 Sekunden läuft kommt ein 500 Error!

    #!/usr/bin/perl

    use strict;
    use Socket;

    my $port = 3256;

    socket(SERVER, AF_INET, SOCK_STREAM, 0) ||
    die "Unable to create socket: $!\n";
    setsockopt(SERVER, SOL_SOCKET, SO_REUSEADDR, pack("l", 1)) ||
    die "setsockopt failed: !\\n"; bind(SERVER, sockaddr\_in(port, INADDR_ANY)) ||
    die "bind failed: $!\n";
    listen(SERVER, SOMAXCONN) ||
    die "listen failed: $!\n";

    print "Hallo\n";

    if(defined(my $peer = accept(CLIENT, SERVER))) {
    print CLIENT scalar localtime, "\n";
    close(CLIENT);
    }

    close(SERVER);



  • Hallo,

    das mit CGI-Scripte unendlich laufen lassen ist wohl ein Marketinggag.

    Wenn Dein Script regelmäßig ausgaben produziert, ist das kein Problem. Wenn Du z.B. jede Sekunde ein "print" machst, läuft das Script weiter.
    Wenn Du allerdings nichts ausgibt, wie es der Fall ist, wärend dein Script auf eigehende Connects wartet, bekommt Dein Script vom Webserver einen auf den Deckel und Du bekommst den "Internal Server Error" gesendet.

    Grundsätzlich läuft ein Script nur solange, wie die Verbindung zwischen dem Webserver und dem aufrufenden Browser besteht. Und dabei kommen die Timeouts von Browser oder Server dazwischen.

    Wenn Du so ein Script permanent laufen lassen willst, muß das unabhängig vom Webserver gestartet werden. Das funktioniert nur, wenn Du dich an der Maschiene per SSH/Telnet anmelden kannst, um das Programm zu starten.

    Frank


  • Mod

    was du suchst ist ein crone job



  • Also wenn dein Programm ewig weiter laufen soll, müsstest du dich per SSH anmelden können und dann z.B. per nohup programm.pl starten. Wenn du dann willst, dass ein CGI mit dem Programm kommunizieren können soll, könntest du z.B. eine fifo erstellen, aus der das CGI programm liest.



  • nohup - oder besser screen - weil du dann immer noch mit dem programm komunizieren kannst, wann du willst





  • is der thread nicht schon 5 jahre alt ^^?


Anmelden zum Antworten