NAME
    Apache::Singleton - Singleton class for mod_perl

SYNOPSIS
      package Printer;
      # default:
      #   Request for mod_perl env
      #   Process for non-mod_perl env
      use base qw(Apache::Singleton);

      package Printer::PerRequest;
      use base qw(Apache::Singleton::Request);

      package Printer::PerProcess;
      use base qw(Apache::Singleton::Process);

DESCRIPTION
    Apache::Singleton works the same as Class::Singleton, but with various
    object lifetime (scope). See the Class::Singleton manpage first.

OBJECT LIFETIME
    By inheriting one of the following sublasses of Apache::Singleton, you
    can change the scope of your object.

    Request
          use base qw(Apache::Singleton::Request);

        One instance for one request. Apache::Singleton will remove instance
        on each request. Implemented using mod_perl "pnotes" API. In
        mod_perl environment (where $ENV{MOD_PERL} is defined), this is the
        default scope, so inheriting from Apache::Singleton would do the
        same effect.

    Process
          use base qw(Apache::Singleton::Process);

        One instance for one httpd process. Implemented using package
        global. In non-mod_perl environment, this is the default scope, and
        you may notice this is the same beaviour with Class::Singleton ;)

        So you can use this module safely under non-mod_perl environment.

AUTHOR
    Original idea by Matt Sergeant <matt@sergeant.org> and Perrin Harkins
    <perrin@elem.com>.

    Code by Tatsuhiko Miyagawa <miyagawa@bulknews.net>.

    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

SEE ALSO
    the Apache::Singleton::Request manpage, the Apache::Singleton::Process
    manpage, the Class::Singleton manpage

