fred at redhotpenguin
Feb 18, 2010, 1:45 AM
Post #1 of 1
Does httpd provide an api through which file descriptors can be
Fwd: [mp2] mod_perl closes apache's stdin and/or stdout
reallocated (probably with XS I'm guessing) into Apache::Fd or
---------- Forwarded message ----------
From: Heiko Weber <heiko [at] wecos>
Date: Thu, Feb 18, 2010 at 12:21 AM
Subject: Re: [mp2] mod_perl closes apache's stdin and/or stdout
To: Salvador Ortiz Garcia <sog [at] msg>
Cc: mod_perl list <modperl [at] perl>
to avoid such issues my "external" tasks don't use STDOUT, STDIN or
STDERR. They take their parameters from control files and write their
results back to a status file. This tasks don't send any output back
to the browsers. As I said, usually some "sudo's to change some system
Well, I could replace all system() calls and just store the task jobs
into a database table, to schedule a background job with cron to check
and complete this tasks, but then I lost the immediately feedback to
the user/browser ... AND this is a lot of work for me - unless I can
exactly repeat the issue I am not sure if it is worth to try it.
Currently it feels to me like a "leakage", sometimes a
httpd/mod_perl/process do something, and later (maybe when working on
the next client request) STDOUT is closed. This makes it hard to
create a sample program to repeat it. Within a single script I can do
almost everything: call system(), open DBI connections, write to
STDOUT, ... everything seems to be fine.
Am 16.02.2010 um 23:26 schrieb Salvador Ortiz Garcia:
On 02/05/2010 12:16 PM, Heiko Weber wrote:
I know what you mean, and I can't agree with you - the server response
time is really low - most pages are finished loading in less 1-2
seconds, and the overall load of the server is at a low level. I
believe there is an issue, maybe something what Jon is talking about,
I also using some "system()" call's to execute sendmail or sudo tasks,
so maybe STDOUT really gets closed - I have no idea. I only see the
abort messages in errorlog very frequent, maybe 3-4 per minute.
Of course STDOUT, STDIN, and STDERR get closed, not by mod_perl but by
apache. Every UNIX process when demonized must close them to detach
from its controling terminal.
Apache reopens STDERR to its log file, but STDOUT and STDIN remain closed.
Maybe de confusion arises from the fact that when executing a CGI the
server connects them to the client socket, but in mod_perl you are in
the deamon process space.
Please check "Advanced Programing in the UNIX environment", chapter
13: "Daemon processes" by W. Richard Stevens.
Wecos <> Heiko Weber Computer Systeme
D-21644 Sauensiek <> Immenweg 5
heiko [at] wecos <> http://www.wecos.de
Tel. +49 (4169) 91000 <> Fax +49 (4169) 919033
This email may contain confidential and privileged material for
the sole use of the intended recipient. Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient please contact the sender and delete all copies.
Diese E-Mail kann digital signiert sein. Falls Ihr E-Mail-Programm
nicht ueber die notwendigen Prueffunktionen verfuegt, ignorieren
Sie bitte die angehaengte Signatur-Datei.
This email may be digitally signed. If your email software does
not support the necessary validation feature, please disregard the
attached signature file.
To unsubscribe, e-mail: dev-unsubscribe [at] perl
For additional commands, e-mail: dev-help [at] perl