/usr/local/CPAN/Apache2-BalanceLogic/Apache2/BalanceLogic/Plugin/DistByTime.pm
package Apache2::BalanceLogic::Plugin::DistByTime;
use strict;
use warnings;
use base qw( Apache2::BalanceLogic::Plugin );
sub run {
my $self = shift;
my $r = shift;
my $route_id;
my @route_array;
my $hour = [ localtime(time) ]->[2];
while ( my ( $key, $value ) = each( %{ $self->{conf} } ) ) {
if ( $key =~ /(\d+)-(\d+)/ ) {
my $from = $1;
my $to = $2;
if ( $hour >= $from && $from <= $to ) {
@route_array = @$value;
}
}
elsif ( $key =~ /^(\d+)$/ ) {
if ( $hour == $1 ) {
@route_array = @$value;
}
}
}
@route_array = @{ $self->{conf}->{other} } unless @route_array;
my $i = int( rand( $#route_array + 1 ) );
$route_id = $route_array[$i];
return $route_id;
}
1;