[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problem with RequestRec and Headers


Yep, that's a bug

perldoc Apache2::RequestUtil

  # get the global request object (requires PerlOptions +GlobalRequest)
  $r = Apache2::RequestUtil->request;

which means u need GlobalRequest in apache config, which I'm not a big fan of. Better raise a bug in cpan rt for this module and get Tatsuhiko to fix it. By the looks of it, this hasn't been updated in a while.

personally I don't really see a need for Apache::Singleton::Process unless there needs to be a module for consistency in Apache:: namespace, class::singleton does pretty much the same job. If you need a per-request singleton meanwhile,  cookup something quickly of your own that uses apache pnotes to store the instance

perldoc Apache2::RequestRec



On 9/24/07, jk jk <suppressed> wrote:
I looked at the source.  It does seem to be written for both.  My understanding was that everything for apache2 was supposed to be in the Apach2:: namespace.  In any case I posted the install error below.  Does an environment variable need to be set?


perl Makefile.PL
Warning: prerequisite mod_perl 0 not found.
Writing Makefile for Apache::Singleton

If I install it anyway I get "[Sun Sep 23 15:09:49 2007] [error] Can't locate Apache/RequestUtil.pm in @INC (@INC contains:......"

Thanks. --JAK


On 9/23/07, bharanee rathna < suppressed> wrote:
AFAIK Apache::Singleton works for MP2, also it does both per request and per process singletons.



On 9/24/07, jk jk < suppressed> wrote:
I've been trying to use Apache::Singleton::Request under the assumption that you're right about Class::Singleton being the crux of the issue.  Unfortunately, I can't get it working under Apache2.  Is there a different module for mp2/apache2 ?  Thanks for your patience. --JAK

On 9/23/07, jk jk <suppressed > wrote:
Why is that?  Class::Singleton is modperl compatible, Apache::Singleton is the same thing with a few more features.  Its purpose to simplify singleton application creation.  My understanding was it would only allow a single instance of the object to be created for each request, not forever.  Please explain your reasoning.  Thanks. --JAK


On 9/23/07, Philippe M. Chiasson < suppressed> wrote:
jk jk wrote:
> I'm trying to port a preexisting CGI app to mod_perl2 and could use some
> help.
>
> Here goes a test case that should illustrate my problem:
>
> The code pasted below loads the page properly the first time it's
> accessed.  However, upon multiple reloads in firefox, the headers either
> disappear altogether or the page is downloaded in the download manager.
> I assume this is because the wrong $r object is being accessed by the
> request?  In any case, I'm at a loss and would really appreciate some
> input.  Thanks in advance.
> [...]
>
> =============
> File: testme/testmod.pm
> =============
>
> package testme::testmod;
>
> use Apache2::RequestUtil;
> use strict;
>
> use base qw /Class::Singleton/;

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

From the documentation of Class::Singleton:

# this only gets called the first time instance() is called

> sub _new_instance{
>
>     my ( $class, $r ) = @_;
>
>     my $self = {};
>
>     bless $self, $class;
>
>     $self->{r} = $r;
>
>     return ( $self );
>
> }

So effectively, your code will capture the $r (once for each child)
from the first request and keep it forever. Trying to use it for subsequent
requests will cause the kind of problems you've seen.

------------------------------------------------------------------------
Philippe M. Chiasson     GPG: F9BFE0C2480E7680 1AE53631CB32A107 88C3A5A5
http://gozer.ectoplasm.org/       m/gozer\@(apache|cpan|ectoplasm)\.org/








Mail converted by mhonarc 2.6.15
This archive provided courtesy of JSW4.NET, Internet Hosting Services for Small Business.