NAME
Apache::Singleton - Singleton class for mod_perl
SYNOPSIS
package Printer;
use base qw(Apache::Singleton);
# same: default is per Request
package Printer::PerRequest;
use base qw(Apache::Singleton::Request);
package Printer::PerProcess;
use base qw(Apache::Singleton::Process);
package Printer::PerServer;
use base qw(Apache::Singleton::Server);
DESCRIPTION
Apache::Singleton works the same as Class::Singleton, but with various object lifetime (scope). See Class::Singleton first.
OBJECT LIFETIME
By iniheriting 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 intstance on each request. Implemented using mod_perl
pnotes
API. 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. Notice this is the same beaviour with Class::Singleton ;)
- Server
-
use base qw(Apache::Singleton::Server);
One instance for one server (across all httpd processes). Implemented using Cache::SharedMemoryCache (IPC).
Note that multiple process cannot share blessed reference without serialization, so One instance for one server is just an idea. What it means is, one instance for one process, and multiple instances with shared data across one server. See t/05_server.t in this module distribution for what it exactly means.
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
Apache::Singleton::Request, Apache::Singleton::Process, Apache::Singleton::Server, Class::Singleton, Cache::SharedMemoryCache