ignore_user_abort in Perl?

ignore_user_abort in Perl?

am 06.10.2006 21:26:11 von helmut_nospam

Hallo NG,
gibt es in Perl einen analogen Befehl zum PHP-Befehl ignore_user_abort?
D.h. ein einmal gestartetes Perl-Serverscript wird auch dann weiter=20
ausgeführt, wenn die Verbindung zum Browser gekappt wird.

thanx for your help, Helmut

Re: ignore_user_abort in Perl?

am 06.10.2006 23:52:35 von Slaven Rezic

helmut_nospam@web.de (Helmut Blass) writes:

> Hallo NG,
> gibt es in Perl einen analogen Befehl zum PHP-Befehl ignore_user_abort?
> D.h. ein einmal gestartetes Perl-Serverscript wird auch dann weiter
> ausgeführt, wenn die Verbindung zum Browser gekappt wird.
>

CGI oder mod_perl? Aber ich glaube, dass Perl-Programme nicht
abgebrochen werden, wenn die Verbindung geschlossen wird. Bei mod_perl
muss man explizit per aborted() prüfen, ob eine Verbindung zum Client
noch besteht.

Gruß,
Slaven

--
Slaven Rezic - slaven rezic de

Start a WWW browser - OS independent:
http://user.cs.tu-berlin.de/~eserte/src/perl/WWWBrowser/

Re: ignore_user_abort in Perl?

am 07.10.2006 00:30:39 von Sven Neuhaus

Helmut Blass schrieb:
> gibt es in Perl einen analogen Befehl zum PHP-Befehl ignore_user_abort?
> D.h. ein einmal gestartetes Perl-Serverscript wird auch dann weiter
> ausgeführt, wenn die Verbindung zum Browser gekappt wird.

Das PIPE-Signal tritt auf, wenn Ausgaben des bereits clientseitig
abgebrochenen Requests im CGI auf STDOUT erfolgen.
Es müßte reichen SIGPIPE zu ignorieren (ist vermutlich bereits so
voreingestellt):
$SIG{PIPE} = 'IGNORE';

-Sven

Re: ignore_user_abort in Perl?

am 07.10.2006 09:46:10 von helmut_nospam

In article <4526d910$0$30582$9b4e6d93@newsspool4.arcor-online.net>, Sven Ne=
uhaus wrote:
>Helmut Blass schrieb:
>> gibt es in Perl einen analogen Befehl zum PHP-Befehl ignore_user_abort?
>> D.h. ein einmal gestartetes Perl-Serverscript wird auch dann weiter=20
>> ausgeführt, wenn die Verbindung zum Browser gekappt wird.
>
>Das PIPE-Signal tritt auf, wenn Ausgaben des bereits clientseitig=20
>abgebrochenen Requests im CGI auf STDOUT erfolgen.
>Es müßte reichen SIGPIPE zu ignorieren (ist vermutlich bereits so=20
>voreingestellt):
>$SIG{PIPE} =3D 'IGNORE';

D.h., dass Perl-Skripte _immer_ automatisch bis zum Ende ausgeführt werde=
n?
Wäre mir aber neu.
Da fällt mir noch eine andere Frage ein: kann man die Begrenzung der=20
Ausführungszeit eines Skriptes beeinflussen?
AFAIK ist da standardmässig 30 sec. eingestellt. In PHP kann man das mit=
=20
set_time_limit() hochsetzen.

Gruss, Helmut

Re: ignore_user_abort in Perl?

am 07.10.2006 10:37:01 von Frank Seitz

Helmut Blass wrote:
> In article <4526d910$0$30582$9b4e6d93@newsspool4.arcor-online.net>, Sven Neuhaus wrote:
>>Helmut Blass schrieb:
>>>
>>>gibt es in Perl einen analogen Befehl zum PHP-Befehl ignore_user_abort?
>>>D.h. ein einmal gestartetes Perl-Serverscript wird auch dann weiter
>>>ausgeführt, wenn die Verbindung zum Browser gekappt wird.
>>
>>Das PIPE-Signal tritt auf, wenn Ausgaben des bereits clientseitig
>>abgebrochenen Requests im CGI auf STDOUT erfolgen.
>>Es müßte reichen SIGPIPE zu ignorieren (ist vermutlich bereits so
>>voreingestellt):
>>$SIG{PIPE} = 'IGNORE';
>
> D.h., dass Perl-Skripte _immer_ automatisch bis zum Ende ausgeführt werden?

Wenn sie erst am Ende zum Webserver kommunizieren, schon.

> Wäre mir aber neu.

Wer weiß das schon so genau?
Ich denke auch, wenn Du SIGPIPE ignorierst, müsstest Du den gewünschten
Effekt haben. Ich glaube allerdings nicht, dass das Signal
üblicherweise ignoriert wird.

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: ignore_user_abort in Perl?

am 07.10.2006 12:07:31 von Slaven Rezic

helmut_nospam@web.de (Helmut Blass) writes:

[...]
> Da fällt mir noch eine andere Frage ein: kann man die Begrenzung der
> Ausführungszeit eines Skriptes beeinflussen?
> AFAIK ist da standardmässig 30 sec. eingestellt. In PHP kann man das mit
> set_time_limit() hochsetzen.

Es gibt standardmäßig keine Begrenzung der Ausführungszeit. Aber unter
Unix kann man mit Resource-Limits arbeiten und damit beispielsweise
die maximale CPU-Zeit eingrenzen. Siehe Apache::Resource und
BSD::Resource.

--
Slaven Rezic - slaven rezic de

Berlin Perl Mongers - http://berlin.pm.org