Apache-Cache
view release on metacpan or search on metacpan
lib/Apache/Cache.pm view on Meta::CPAN
Constuct a new Apache::Cache's instance.
=over 4
=item *
C<default_expires_in> optional, date
The default data expiration time for objects place in the cache. Integers is interpreted in seconds, constant
EXPIRES_NOW make data expire imédiately and constant EXPIRES_NEVER make the data never expire. The
timeout can also be in a human readable format, see L<Time::ParseDate> for this format specification.
Defaults to constant EXPIRES_NEVER if not explicitly set.
=item *
C<max_keys> optional, integer
If you set more than C<max_keys> keys, olders are automatically removed. Usefull to control the cache's grow.
NOTE: if you know the exact length of your keys, use this option to control the cache size instead of the
C<max_size> option.
Defaults to no max_keys
=item *
C<max_size> optional, integer
no yet implemented
=item *
C<cachename> optional, string
The namespace associated with this cache.
Defaults to "Default" if not explicitly set.
=item *
C<default_lock_timeout> optional, integer
Number of second(s) to wait for locks used each time manipulating data in the shared memory.
Defaults to not waiting. This means a get() - for expample - on a temporary locked
key - certainely by another process - will return a FAILED status.
=back
Additionnaly, all Apache::SharedMem parameters are also customizable. See L<Apache::SharedMem>.
=cut
sub new
{
my $pkg = shift;
my $class = ref($pkg) || $pkg;
my $options =
{
namespace => (caller())[0],
cachename => 'Default',
default_expires_in => EXPIRES_NEVER,
max_keys => undef(),
max_size => undef(),
default_lock_timeout=> undef(),
};
croak("odd number of arguments for object construction")
if(@_ % 2);
my @del;
for(my $x = 0; $x < $#_; $x += 2)
{
if(exists($options->{lc($_[$x])}))
{
$options->{lc($_[$x])} = $_[($x + 1)];
# We split off this parameter from the main argument list.
# Remaining arguments will be send to Apache::SharedMem
splice(@_, $x, 2);
$x -= 2;
}
}
foreach my $name (qw(cachename namespace))
{
croak("$pkg object creation missing $name parameter.")
unless(defined($options->{$name}) && $options->{$name} ne '');
}
my $self = $class->SUPER::new(@_, namespace=>$options->{namespace});
return(undef()) unless(defined($self));
$self->{cache_options} = $options;
unless($self->SUPER::exists($options->{cachename}, $self->_lock_timeout))
{
return(undef()) if($self->SUPER::status eq FAILURE);
$self->_init_cache || return undef;
}
bless($self, $class);
return($self);
}
=pod
=head2 set (identifier => data, [timeout])
$cache->set(mykey=>'the data to cache', '15 minutes');
if($cache->status & FAILURE)
{
warn("can't save data to cache: $cache->error");
}
Store an item in the cache.
=over 4
=item *
C<identifier> required, string
( run in 6.011 seconds using v1.01-cache-2.11-cpan-75ffa21a3d4 )