Mike Cardwell wrote:
> * on the Fri, Mar 23, 2007 at 12:33:07PM -0700, Tom Bombadil wrote:
> 
>> We are using perl to call a "webservice" for recipient checking, home
>> directories, etc instead of LDAP, or SQL...
>>
>> The question is: Can we somehow pre-connect once at startup using perl,
>> so we avoid the overhead of a new TCP connection on every query?
> 
> Make the connection the first time the subroutine is called, and store
> it in a global variable. Eg:
> 
> #!/usr/bin/perl
> use strict;
> use warnings;
> 
> my $sock;
> 
> sub first_sub {
>    my $sock = get_sock();
>    # do stuff
> }
> 
> sub second_sub {
>    my $sock = get_sock();
>    # do other stuff
> }
> 
> sub conn {
>    unless( defined $sock ){
>       # Set up your socket here and store in $sock
>    }
>    return $sock;
> }
> 
> Note. The process that delivers the message is often different to the
> one that accepts the message so if you're performing webservice lookups
> in both the routers and the acl's you're going to make multiple
> connections.
> 
> Personally I would write a standalone multithreaded daemon for this,
> and talk to it using a network connection with ${readsocket} that
> way you can maintain your own pool of connections to the web service
> that aren't constantly opening and closing, and you can share a cache
> between multiple deliveries/mail servers.
> 
> *cough* I'm available for contract work ;)
> 
> Mike
> 

I see. That sounds great. I was actually wondering if global variables
could be used at all. Thanks a lot Mike.



-- 
## List details at http://www.exim.org/mailman/listinfo/exim-users 
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://www.exim.org/eximwiki/

Reply via email to