[vienna.pm] Hallo! Und gleich eine Frage...

Peter J . Holzer hjp at wsr.ac.at
Thu Feb 15 08:52:27 CST 2001


On 2001-02-15 15:03:00 +0100, Harald.Schoenknecht at maxmobil.at wrote:
> Ich habe eine Frage zu CGI (Perl/Apache) die mir momentan Kopfzerbrechen
> bereitet...
> Wenn ich ein Perl Programm laufen habe das *sehr* lange zur Ausfuehrung
> benoetigt dann wird die HTML Datei - trotz print $query->end_html; - nicht
> "beendet" und ich bekomme nach einiger Zeit einen Timeout. Gibt es eine
> (einfache?) Moeglichkeit entweder Apache zu sagen: Da kommt nichts mehr

Wenn es ein echtes CGI ist: Ja. Gibt es. Ist sogar
ganz einfach und logisch:

    close(STDOUT);

Ob das mit mod_perl auch geht, weiß ich nicht.

> (und das Perl Programm trotzdem weiterlaufen zu lassen und nicht zu
> beenden...) oder aber ein anderes Programm aufzurufen das weiterlaeuft
> waehrend das urspruengliche Programm beendet wird (damit Apache nichts mehr
> erwartet...).
> So:
>      print $query->p("Der Transfer wird begonnen...");
>      print $query->end_html;
>      $start_demon="/oms_opt/local/apache/cgi-bin/transfer/exec_demon.pl
> ".$u_id." ".$filenameX." ".$N_elem." ".$N_MSC_Datei." ".$N_user."
> ".$N_pass;
>      exec $start_demon;
>      exit(1);
>  geht's leider nicht... entweder das Programm exec_demon.pl wird ueberhaupt
> nicht gestartet

Der Code hat gleich mehrere Probleme:

1) könntest Du das leicht feststellen, indem Du statt

    exec $start_demon;

besser 

    exec $start_demon or die "$0: cannot exec $start_demon: $!";

schreibst. Dann bekommst Du auch gleich eine sinnvolle Fehlermeldung
(z.B. "Permission denied" oder "no such file or directory" im Logfile.

Prinzipiell sollte man immer bei JEDER Funktion, bei der etwas schiefgehen
kann, den Return-Code abfragen.

2) ist in dem Fall der Aufruf der Funktion exec falsch. Exec erwartet
eine Liste, in der das 1. Element das auszuführende Programm ist, und
die weiteren Elemente die Argumente. So wie Du das oben gemacht hast,
versuchst Du ein Programm mit einem sehr seltsamen Namen mit vielen
Spaces drin aufzurufen.

3) bezweifle ich, daß Du exec ohne fork verwenden wolltest. 

	hp

-- 
   _  | Peter J. Holzer      | Any setuid root program that does an
|_|_) | Sysadmin WSR / LUGA  | exec() somewhere is just a less
| |   | hjp at wsr.ac.at        | user friendly version of su.
__/   | http://www.hjp.at/   |    -- Olaf Kirch on bugtraq 2000-08-07
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 371 bytes
Desc: not available
Url : http://mail.pm.org/archives/vienna-pm/attachments/20010215/25f269d4/attachment.bin


More information about the Vienna-pm mailing list