Cache-Memcached-Managed
view release on metacpan or search on metacpan
lib/Cache/Memcached/Managed.pm view on Meta::CPAN
#
# IN: 1 instantiated object
# 2 value
# 3 id
# OUT: 1 true if successful
#
# or:
#
# IN: 1 instantiated object
# 2..N parameter hash
# OUT: 1 true if successful
sub set { shift->_do( 'set',@_ ) } #set
#---------------------------------------------------------------------------
# servers
#
# Return the specifications of all memcached servers being used in
# alphabetical order in list context, or as a hash ref in scalar context
#
# IN: 1 instantiated object
# OUT: 1..N server specifications in alphabetical order
#
# or:
#
# OUT: 1 hash ref with server configs
sub servers {
return wantarray
? @{ shift->{servers} }
: { map { $_ => undef } @{ shift->{servers} } };
} #servers
#---------------------------------------------------------------------------
# start
#
# Start the indicated memcached backend servers
#
# IN: 1 instantiated object
# 2..N config of memcached servers to start (default: all)
# OUT: 1 whether all indicated memcached servers started
sub start {
# Obtain the object
# Obtain the servers to start
my $self = shift;
@_ = $self->servers unless @_;
# Initialize started counter
# For all of the servers to start
# Obtain IP and port
# Increment counter if start was successful
my $started = 0;
foreach (@_) {
my ($ip,$port) = split ':';
$started++ unless system 'memcached',
'-d','-u',(scalar getpwuid $>),'-l',$ip,'-p',$port;
}
# Return whether all servers started
$started == @_;
} #start
#---------------------------------------------------------------------------
# stats
#
# Return a hash ref with simple statistics for each server
#
# IN: 1 instantiated object
# 2..N config specifications of servers (default: all)
# OUT: 1 hash reference
#
# $stats
# |-- server
# |-- key
# |-- value
sub stats {
# Obtain the object
# Return now if no active servers anymore
my $self = shift;
return {} unless $self->_check_socket;
# Create hash with configs to be done
# Initialize the result ref
# For all of the objects that we have
# For all of the servers we want to do this
# Reloop if not to be done
# Obtain STATS info
my %todo = @_ ? map {$_ => undef} @_ : %{$self->servers};
my %result;
foreach my $cache ($self->data,$self->directory) {
foreach my $host ( $self->servers ) {
next unless exists $todo{$host} and not exists $result{$host};
$result{$host} = {
map {s#^STAT ##; split m#\s+#}
$self->_morelines( $cache,$host,"stats" )
};
}
}
# Return the result hash as a ref
\%result;
} #stats
#---------------------------------------------------------------------------
# stop
#
# Stop the indicated memcached backend servers
#
# IN: 1 instantiated object
# 2..N config of memcached servers to stop (default: all)
( run in 0.484 second using v1.01-cache-2.11-cpan-39bf76dae61 )