Anzeige:
Ergebnis 1 bis 4 von 4

Thema: perl cgi: Prozess im Hintergrund starten

  1. #1
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762

    perl cgi: Prozess im Hintergrund starten

    Ich habe ein cgi, das ein Formular ausgibt. Wenn man die Daten abschickt, dann erstellt das cgi daraus eine pdf-Datei.
    Das klappt alles.

    Jetzt will ich einbauen, dass die pdf-Datei nach 15 Sekunden automatisch gelöscht wird, aber das cgi reagiert nicht wie es soll:
    Wenn ich die Daten jetzt abschicke, dann lädt das cgi 15 Sekunden, zeigt dann den Output und das pdf ist natürlich weg, anstatt das sleep im Hintergrund zu machen.

    Ich habe jetzt schon system("sleep+löschkommando &") ausprobiert, habe versucht die Ausgaben zu flushen und jetzt bin ich bei fork und exec angekommen und selbst dann führt er das sleep und löschen aus bevor er die Seite ausgibt:
    Code:
            print "<a href=\"../bla.pdf\">download</a>";
            print $cgi->end_html();
            my $pid = fork();
            if($pid == 0) {
                    exec("perl -e \'sleep 15; unlink(\"../bla.pdf\");\'");
            } else {
                    exit;
            }
    Wie soll das jetzt gehen? Ich hab keine Lust einen cronauftrag über perl anzulegen, der das macht.
    I haven't lost my mind - It's somewhere on a backup-disc

  2. #2
    Registrierter Benutzer
    Registriert seit
    05.02.2006
    Beiträge
    116
    probier mal:
    Code:
    system("perl -e 'sleep 15; unlink $pdf' &");
    wenn das nicht geht, mach ein kleines Perl-Skript, das nur das sleep und das löschen macht. Dann sollte es wie folgt gehen:
    Code:
    system("perl skript.pl $pdf &");
    skript.pl
    Code:
    #!/usr/bin/perl
    
    sleep 15;
    unlink $ARGV[0];

  3. #3
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    leider funktioniert beides nicht, ich habs nochmal ausprobiert. Sobald ich auf Absenden klicke, wartet er 15 Sekunden, löscht das pdf und zeigt mir dann erst die Downloadseite
    I haven't lost my mind - It's somewhere on a backup-disc

  4. #4
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    das muss irgenwas mit dem apachen sein. Ich habe ein C-Programm geschrieben, das forkt, alle signale ignoriert und nur den Kindprozess (d.h. schlafen und löschen der Datei) ausführt. Funktioniert auch, aber sobald ich das im Skript von mir einbinde, wird es sofort gekillt.

    Ich hab jetzt einen regulären cronjob eingerichtet, der mir die Datei alle paar Minuten löscht. Das zu skripten ist mir zu blöd.
    I haven't lost my mind - It's somewhere on a backup-disc

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •