Acme-Ghost
view release on metacpan or search on metacpan
lib/Acme/Ghost/Prefork.pm view on Meta::CPAN
=cut
our $VERSION = '1.01';
use parent qw/Acme::Ghost/;
use Carp qw/carp croak/;
use POSIX qw/WNOHANG/;
use Time::HiRes qw//;
use Scalar::Util qw/weaken/;
use IO::Poll qw/POLLIN POLLPRI/;
use constant {
DEBUG => !!($ENV{ACME_GHOST_PREFORK_DEBUG} || 0),
SPARE => 2,
SPIRITS => 4,
HEARTBEAT_INTERVAL => 50,
HEARTBEAT_TIMEOUT => 5,
GRACEFUL_TIMEOUT => 120,
};
lib/Acme/Ghost/Prefork.pm view on Meta::CPAN
my $self = shift;
# Manager
croak("Can't fork: $!\n") unless defined(my $pid = fork);
if ($pid) { # Parent (manager)
$self->spawn($pid);
return $self->{pool}{$pid} = {time => Time::HiRes::time};
}
$self->{spirited} = 1; # Inspiration! (disables cleanup)
weaken $self;
# Clean spirit signals
$SIG{$_} = 'DEFAULT' for qw/CHLD INT TERM TTIN TTOU/;
# Set QUIT signal
$SIG{QUIT} = sub {
$self->log->warn("Spirit $$ received QUIT signal") if DEBUG;
$self->_heartbeat(1); # Send finish command to manager
};
( run in 0.505 second using v1.01-cache-2.11-cpan-3b35f9de6a3 )