NAME

Mojo::Phantom::Process - Represents the running phantom process and its stream

SYNOPSIS

my $proc = Mojo::Phantom::Process->new;
$proc->start($file);

DESCRIPTION

A very utilitarian class representing a single execution of the PhantomJS executable. It forks the new process and attaches a stream watcher to its STDOUT and attaches to various stream events. This class is just process management and transport. All real behavior is defined by the executed javascript file and the listeners to the events defined by this class.

EVENTS

Mojo::Phantom::Process inherits all the events from Mojo::EventEmitter and emits the following new ones

close

$proc->on(close => sub { ($proc) = @_; ... });

Emitted when the process has exitted (possibly with errors) and the stream has closed. The user will want to check "error" and "exit_status".

read

$proc->on(read => sub { ($proc, $bytes) = @_; ... });

Re-emitted after bytes have been read from the "stream".

spawn

$proc->on(spawn => sub { my ($proc, $pid) = @_; ... });

Emitted just after the child process is spawned. Passed the new child pid.

ATTRIBUTES

arguments

Holds an array reference of arguments passed directly to the PhantomJS executable when it is run.

my @phantom_args = ('--proxy=127.0.0.1:8080', '--proxy-type='socks5');
my $proc = Mojo::Phantom::Process->new(arguments => \@phantom_args);

error

Holds errors caught from the "stream"'s error event. Note that when such an error event is caught, the process is then killed by the "kill" method immediately afterwards.

exit_status

The exit status $? from the closed pid.

pid

The pid of the spawned process. The stream's close event will clear this value once the process has ended.

stream

The instance of Mojo::IOLoop::Stream used to monitor the STDOUT of the external process. It is created automatically attacted to the "singleton" in Mojo::IOLoop by running "start".

exe

The executable name or path to call PhantomJS. You may substitute a compatible platform, for example using casperjs to use CasperJS.

METHODS

kill

$proc->kill

Kills the child process (KILL) and closes the stream. Note that since the process might exit before the kill signal is sent, it is not guaranteed that the "exit_status" will reflect the signal.

start

$proc->start($file);

Starts a PhantomJS in a child process running a given file, creates a stream listener and attaches to its events. Returns itself.