You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by "Jonathan M. Hollin" <ne...@digital-word.com> on 2001/12/11 13:25:23 UTC
Defeating mod_perl Persistence
Hey Gang,
When using Mail::Sender only the first email is sent on my mod_perl server.
When I investigated, I realised that the socket to the SMTP server was
staying open after the completion of that first email (presumably mod_perl
is responsible for this persistence).
Is there any way to defeat the persistence on the socket while running my
script under mod_perl, or do such scripts always need to be mod_cgi?
FYI, the script works fine under mod_cgi.
Jonathan M. Hollin - WYPUG Co-ordinator
West Yorkshire Perl User Group
http://wypug.pm.org/
RE: Defeating mod_perl Persistence
Posted by "Jonathan M. Hollin" <ne...@digital-word.com>.
:: You're probably storing it in a global so it never gets cleaned
:: up. Don't
:: do that.
No, it's not a global Perrin - I've learnt that lesson! :-)
Re: Defeating mod_perl Persistence
Posted by Perrin Harkins <pe...@elem.com>.
> When using Mail::Sender only the first email is sent on my mod_perl
server.
> When I investigated, I realised that the socket to the SMTP server was
> staying open after the completion of that first email (presumably mod_perl
> is responsible for this persistence).
>
> Is there any way to defeat the persistence on the socket while running my
> script under mod_perl, or do such scripts always need to be mod_cgi?
You're probably storing it in a global so it never gets cleaned up. Don't
do that.
- Perrin
Re: Defeating mod_perl Persistence
Posted by Eric Cholet <ch...@logilune.com>.
--On mardi 11 décembre 2001 12:25 +0000 "Jonathan M. Hollin"
<ne...@digital-word.com> wrote:
> Hey Gang,
>
> When using Mail::Sender only the first email is sent on my mod_perl
> server. When I investigated, I realised that the socket to the SMTP
> server was staying open after the completion of that first email
> (presumably mod_perl is responsible for this persistence).
>
> Is there any way to defeat the persistence on the socket while running my
> script under mod_perl, or do such scripts always need to be mod_cgi?
>
> FYI, the script works fine under mod_cgi.
maybe you should just call Close() on the Mail::Sender object,
from the docs:
Close
$sender->Close;
Close and send the mail. This method should be called
automatically when destructing the object, but you
should call it yourself just to be sure it gets called.
And you should do it as soon as possible to close the
connection and free the socket.
The mail is being sent to server, but is not processed
by the server till the sender object is closed!
--
Eric Cholet
Re: Defeating mod_perl Persistence
Posted by ed phillips <ar...@sirius.com>.
Ged Haywood wrote:
>
> Hi there,
>
> On Tue, 11 Dec 2001, Jonathan M. Hollin wrote:
>
> > When using Mail::Sender only the first email is sent on my mod_perl server.
> > When I investigated, I realised that the socket to the SMTP server was
> > staying open after the completion of that first email (presumably mod_perl
> > is responsible for this persistence).
> >
> > Is there any way to defeat the persistence on the socket while running my
> > script under mod_perl, or do such scripts always need to be mod_cgi?
>
> The idea is for the mod_perl process to complete its job and get on
> with another as quickly as possible. Waiting around for nameserver
> timeouts and such doesn't help things.
>
> You might be better off re-thinking the design for use under mod_perl.
> This is a well-trodden path, have a browse through the archives.
>
Yes, this has come up before. Ideally you want to separate out your mail
service and pass your mails to a queue. Then, wholly independent of your
app, your smtp server can negotiate with remote hosts and generally do
its thing. That is, you shouldn't even make your app wait for your SMTP
server to send an email before you free it to handle the next request.
This is analagous to using a proxy server to handle slowish clients. See
the guide, archives.
Ed
Re: Defeating mod_perl Persistence
Posted by Ged Haywood <ge...@www2.jubileegroup.co.uk>.
Hi there,
On Tue, 11 Dec 2001, Jonathan M. Hollin wrote:
> When using Mail::Sender only the first email is sent on my mod_perl server.
> When I investigated, I realised that the socket to the SMTP server was
> staying open after the completion of that first email (presumably mod_perl
> is responsible for this persistence).
>
> Is there any way to defeat the persistence on the socket while running my
> script under mod_perl, or do such scripts always need to be mod_cgi?
The idea is for the mod_perl process to complete its job and get on
with another as quickly as possible. Waiting around for nameserver
timeouts and such doesn't help things.
You might be better off re-thinking the design for use under mod_perl.
This is a well-trodden path, have a browse through the archives.
73,
Ged.