Re: How to pre-open files in apache's processes

"Hendrik Schumacher" <[email protected]>
Newsgroups gmane.comp.apache.mod-perl
Message-ID <[email protected]>
Am Do, 2.12.2010, 02:24, schrieb Xiao Lan:
> On Thu, Dec 2, 2010 at 3:38 AM, Mithun Bhattacharya <[email protected]>
> wrote:
>> Can you confirm the error you are encountering using your current method
>> ?
>>
>> I would like to understand what you are trying to achieve by having a
>> global file handle - do you want to have modular code or does the
>> content of the file somehow determine which handler to be used ?
>>
>
> Hi,
>
> Thanks for the replying.
> I was giving the example by openning a file.
> In acutal I was using this module:
>
> http://search.cpan.org/~sunnavy/IP-QQWry-0.0.16/lib/IP/QQWry.pm
>
> For each client request if I open the data file:
>
> my $qqwry = IP::QQWry->new('QQWry.Dat');
>
> That will be slow IMO.
>
> So I was thinking to pre-open the data file in each process of apache
> and use it directly in each handler.
>
> How about this case? Thanks.
>
> Regards.
>

Hi.

You could do the following (and avoid any possible conflicts when using
the file descriptor globally - one thing that comes into my mind would be
seek):

In the perl file that holds your handler declare a variable on module level:

my $qqwry = undef;

In the handler instantiate the object if $qqwry is undefined:

if (not $qqwry)
{
  $qqwry = IP::QQWry->new('QQWry.Dat');
}

This way the file should be opened only once in each apache process (which
should be good enough for performance reasons). The my $qqwry on module
level should be persistent in each process.

Hendrik
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.