AbstractJob
in package
implements
JobInterface
Abstract job class
Tags
Table of Contents
Interfaces
- JobInterface
- Job interface
Properties
- $attempts : int
- Attempts
- $availableAt : int|null
- Timestamp before which this job is not eligible for reservation
- $backoff : int|array<string|int, mixed>|null
- Retry backoff: a fixed delay in seconds, or a per-attempt schedule that holds at its last value for further attempts. Null = immediate retry.
- $callable : CallableObject|null
- Job callable
- $command : string|array<string|int, mixed>|null
- Job application command - an invocation string routed through the application (e.g. 'greet Nick'), or an argv-style array of already split segments (e.g. ['notify', 'Hello there, world']). The string form is split on whitespace by the router, so the array form is the only way to pass a value that itself contains spaces.
- $completed : int|null
- Job completed timestamp
- $description : string|null
- Job Description
- $exec : string|array<string|int, mixed>|null
- Job CLI executable command - a shell command string (runs via the shell, e.g. 'ls -la | wc -l'), or an argv-style array to run with no shell involved at all (e.g. ['ls', '-la'] - the safer form when any part of the command isn't a fully-trusted literal, since shell metacharacters in an argv element are inert)
- $failed : int|null
- Job failed timestamp
- $failedMessages : array<string|int, mixed>
- Job failed messages
- $id : string|null
- Job ID
- $maxAttempts : int
- Max attempts
- $results : mixed
- Job results
- $runUntil : int|string|null
- Run until property
- $serializedClosure : string|null
- Serialize closure
- $serializedParameters : array<string|int, mixed>|null
- Serialize parameters
- $started : int|null
- Job started timestamp
- $timeout : int|null
- Soft execution timeout, in seconds (only enforced when ext-pcntl is loaded)
Methods
- __construct() : mixed
- Constructor
- __sleep() : array<string|int, mixed>
- Sleep magic method
- __wakeup() : void
- Wakeup magic method
- addFailedMessage() : AbstractJob
- Add failed message
- complete() : AbstractJob
- Complete job
- delay() : AbstractJob
- Delay job availability
- failed() : AbstractJob
- Set job as failed
- generateJobId() : string
- Generate job ID
- getAttempts() : int
- Get actual attempts
- getAvailableAt() : int|null
- Get available-at timestamp
- getBackoff() : int|array<string|int, mixed>|null
- Get retry backoff
- getBackoffDelay() : int
- Get the backoff delay, in seconds, for the current attempt count
- getCallable() : CallableObject|null
- Get job callable
- getCommand() : string|array<string|int, mixed>|null
- Get job application command
- getCompleted() : int|null
- Get completed timestamp
- getDuration() : int|null
- Get how long the job took to run, in seconds, or null unless it both started and completed. Convenience for observability listeners, which would otherwise all repeat the same timestamp subtraction.
- getExec() : string|array<string|int, mixed>|null
- Get job CLI executable command
- getFailed() : int|null
- Get failed timestamp
- getFailedMessages() : array<string|int, mixed>
- Get failed messages
- getJobDescription() : string|null
- Get job description
- getJobId() : string|null
- Get job ID
- getMaxAttempts() : int
- Get max attempts
- getResults() : mixed
- Get job results
- getRunUntil() : int|string|null
- Get run until value
- getStarted() : int|null
- Get started timestamp
- getTimeout() : int|null
- Get soft execution timeout
- hasAttempts() : bool
- Has actual attempts
- hasBackoff() : bool
- Has retry backoff
- hasCallable() : bool
- Has job callable
- hasCommand() : bool
- Has job application command
- hasExceededMaxAttempts() : bool
- Determine if the job has exceeded max attempts
- hasExec() : bool
- Has job CLI executable command
- hasFailed() : bool
- Has job failed
- hasFailedMessages() : bool
- Has failed messages
- hasJobDescription() : bool
- Has job description
- hasJobId() : bool
- Has job ID
- hasMaxAttempts() : bool
- Has max attempts
- hasNotRun() : bool
- Has job run yet
- hasResults() : bool
- Has job results
- hasRunUntil() : bool
- Has run until
- hasStarted() : bool
- Has job started
- hasTimeout() : bool
- Has soft execution timeout
- isAttemptOnce() : bool
- Is job set for only one max attempt
- isAvailable() : bool
- Determine if the job is currently available (no delay, or delay has elapsed)
- isComplete() : bool
- Is job complete
- isExpired() : bool
- Determine if the job has expired
- isRunning() : bool
- Is job running and has not completed or failed yet
- isValid() : bool
- Determine if the job is still valid
- run() : mixed
- Run job
- runUntil() : AbstractJob
- Set the run until property
- setBackoff() : AbstractJob
- Set retry backoff (fixed seconds, or a per-attempt schedule)
- setCallable() : AbstractJob
- Set job callable
- setCommand() : AbstractJob
- Set job application command
- setExec() : AbstractJob
- Set job CLI executable command
- setJobDescription() : AbstractJob
- Set job description
- setJobId() : AbstractJob
- Set job ID
- setMaxAttempts() : AbstractJob
- Set max attempts
- setTimeout() : AbstractJob
- Set soft execution timeout
- start() : AbstractJob
- Start job
- buildExecProcess() : Process
- Build the Process instance for this job's exec command, without running it. Split out from runExec() purely so a test can construct one and inspect its configured timeout directly, without actually executing a command.
- describeFromCommand() : void
- Borrow a job description from the dispatched command, if it has one and the job was not given one explicitly. A command already documents itself, so a queued command job need not be anonymous in the registry.
- loadCallable() : mixed
- Load callable
- runCommand() : mixed
- Run application command
- runExec() : mixed
- Run CLI executable command
Properties
$attempts
Attempts
protected
int
$attempts
= 0
$availableAt
Timestamp before which this job is not eligible for reservation
protected
int|null
$availableAt
= null
$backoff
Retry backoff: a fixed delay in seconds, or a per-attempt schedule that holds at its last value for further attempts. Null = immediate retry.
protected
int|array<string|int, mixed>|null
$backoff
= null
$callable
Job callable
protected
CallableObject|null
$callable
= null
$command
Job application command - an invocation string routed through the application (e.g. 'greet Nick'), or an argv-style array of already split segments (e.g. ['notify', 'Hello there, world']). The string form is split on whitespace by the router, so the array form is the only way to pass a value that itself contains spaces.
protected
string|array<string|int, mixed>|null
$command
= null
$completed
Job completed timestamp
protected
int|null
$completed
= null
$description
Job Description
protected
string|null
$description
= null
$exec
Job CLI executable command - a shell command string (runs via the shell, e.g. 'ls -la | wc -l'), or an argv-style array to run with no shell involved at all (e.g. ['ls', '-la'] - the safer form when any part of the command isn't a fully-trusted literal, since shell metacharacters in an argv element are inert)
protected
string|array<string|int, mixed>|null
$exec
= null
$failed
Job failed timestamp
protected
int|null
$failed
= null
$failedMessages
Job failed messages
protected
array<string|int, mixed>
$failedMessages
= []
$id
Job ID
protected
string|null
$id
= null
$maxAttempts
Max attempts
protected
int
$maxAttempts
= 0
$results
Job results
protected
mixed
$results
= null
$runUntil
Run until property
protected
int|string|null
$runUntil
= null
$serializedClosure
Serialize closure
protected
string|null
$serializedClosure
= null
$serializedParameters
Serialize parameters
protected
array<string|int, mixed>|null
$serializedParameters
= null
$started
Job started timestamp
protected
int|null
$started
= null
$timeout
Soft execution timeout, in seconds (only enforced when ext-pcntl is loaded)
protected
int|null
$timeout
= null
Methods
__construct()
Constructor
public
__construct([mixed $callable = null ][, mixed $params = null ][, string|null $id = null ]) : mixed
Instantiate the job object
Parameters
- $callable : mixed = null
- $params : mixed = null
- $id : string|null = null
__sleep()
Sleep magic method
public
__sleep() : array<string|int, mixed>
Return values
array<string|int, mixed>__wakeup()
Wakeup magic method
public
__wakeup() : void
addFailedMessage()
Add failed message
public
addFailedMessage(string $message) : AbstractJob
Parameters
- $message : string
Return values
AbstractJobcomplete()
Complete job
public
complete() : AbstractJob
Return values
AbstractJobdelay()
Delay job availability
public
delay(int|string $when) : AbstractJob
Parameters
- $when : int|string
-
Seconds from now (int below 1000000000), an absolute timestamp (int), or a strtotime()-parseable string
Tags
Return values
AbstractJobfailed()
Set job as failed
public
failed([string|null $message = null ]) : AbstractJob
Parameters
- $message : string|null = null
Return values
AbstractJobgenerateJobId()
Generate job ID
public
generateJobId() : string
Return values
stringgetAttempts()
Get actual attempts
public
getAttempts() : int
Return values
intgetAvailableAt()
Get available-at timestamp
public
getAvailableAt() : int|null
Return values
int|nullgetBackoff()
Get retry backoff
public
getBackoff() : int|array<string|int, mixed>|null
Return values
int|array<string|int, mixed>|nullgetBackoffDelay()
Get the backoff delay, in seconds, for the current attempt count
public
getBackoffDelay() : int
Return values
intgetCallable()
Get job callable
public
getCallable() : CallableObject|null
Return values
CallableObject|nullgetCommand()
Get job application command
public
getCommand() : string|array<string|int, mixed>|null
Return values
string|array<string|int, mixed>|nullgetCompleted()
Get completed timestamp
public
getCompleted() : int|null
Return values
int|nullgetDuration()
Get how long the job took to run, in seconds, or null unless it both started and completed. Convenience for observability listeners, which would otherwise all repeat the same timestamp subtraction.
public
getDuration() : int|null
Return values
int|nullgetExec()
Get job CLI executable command
public
getExec() : string|array<string|int, mixed>|null
Return values
string|array<string|int, mixed>|nullgetFailed()
Get failed timestamp
public
getFailed() : int|null
Return values
int|nullgetFailedMessages()
Get failed messages
public
getFailedMessages() : array<string|int, mixed>
Return values
array<string|int, mixed>getJobDescription()
Get job description
public
getJobDescription() : string|null
Return values
string|nullgetJobId()
Get job ID
public
getJobId() : string|null
Return values
string|nullgetMaxAttempts()
Get max attempts
public
getMaxAttempts() : int
Return values
intgetResults()
Get job results
public
getResults() : mixed
getRunUntil()
Get run until value
public
getRunUntil() : int|string|null
Return values
int|string|nullgetStarted()
Get started timestamp
public
getStarted() : int|null
Return values
int|nullgetTimeout()
Get soft execution timeout
public
getTimeout() : int|null
Return values
int|nullhasAttempts()
Has actual attempts
public
hasAttempts() : bool
Return values
boolhasBackoff()
Has retry backoff
public
hasBackoff() : bool
Return values
boolhasCallable()
Has job callable
public
hasCallable() : bool
Return values
boolhasCommand()
Has job application command
public
hasCommand() : bool
Return values
boolhasExceededMaxAttempts()
Determine if the job has exceeded max attempts
public
hasExceededMaxAttempts() : bool
Return values
boolhasExec()
Has job CLI executable command
public
hasExec() : bool
Return values
boolhasFailed()
Has job failed
public
hasFailed() : bool
Return values
boolhasFailedMessages()
Has failed messages
public
hasFailedMessages() : bool
Return values
boolhasJobDescription()
Has job description
public
hasJobDescription() : bool
Return values
boolhasJobId()
Has job ID
public
hasJobId() : bool
Return values
boolhasMaxAttempts()
Has max attempts
public
hasMaxAttempts() : bool
Return values
boolhasNotRun()
Has job run yet
public
hasNotRun() : bool
Return values
boolhasResults()
Has job results
public
hasResults() : bool
Return values
boolhasRunUntil()
Has run until
public
hasRunUntil() : bool
Return values
boolhasStarted()
Has job started
public
hasStarted() : bool
Return values
boolhasTimeout()
Has soft execution timeout
public
hasTimeout() : bool
Return values
boolisAttemptOnce()
Is job set for only one max attempt
public
isAttemptOnce() : bool
Return values
boolisAvailable()
Determine if the job is currently available (no delay, or delay has elapsed)
public
isAvailable() : bool
Return values
boolisComplete()
Is job complete
public
isComplete() : bool
Return values
boolisExpired()
Determine if the job has expired
public
isExpired() : bool
Return values
boolisRunning()
Is job running and has not completed or failed yet
public
isRunning() : bool
Return values
boolisValid()
Determine if the job is still valid
public
isValid() : bool
Impure on two counts: it reads $attempts, which failed() increments, and it compares $runUntil against the current time. The same job can answer true and then false without anything being reassigned, so callers must not have an earlier answer cached on their behalf.
Tags
Return values
boolrun()
Run job
public
run([Application|null $application = null ]) : mixed
Parameters
- $application : Application|null = null
runUntil()
Set the run until property
public
runUntil(int|string $runUntil) : AbstractJob
Parameters
- $runUntil : int|string
Return values
AbstractJobsetBackoff()
Set retry backoff (fixed seconds, or a per-attempt schedule)
public
setBackoff(int|array<string|int, mixed> $backoff) : AbstractJob
Parameters
- $backoff : int|array<string|int, mixed>
Return values
AbstractJobsetCallable()
Set job callable
public
setCallable(mixed $callable[, mixed $params = null ]) : AbstractJob
Parameters
- $callable : mixed
- $params : mixed = null
Return values
AbstractJobsetCommand()
Set job application command
public
setCommand(string|array<string|int, mixed> $command) : AbstractJob
Parameters
- $command : string|array<string|int, mixed>
Return values
AbstractJobsetExec()
Set job CLI executable command
public
setExec(string|array<string|int, mixed> $command) : AbstractJob
Parameters
- $command : string|array<string|int, mixed>
Return values
AbstractJobsetJobDescription()
Set job description
public
setJobDescription(string $description) : AbstractJob
Parameters
- $description : string
Return values
AbstractJobsetJobId()
Set job ID
public
setJobId(string $id) : AbstractJob
Parameters
- $id : string
Return values
AbstractJobsetMaxAttempts()
Set max attempts
public
setMaxAttempts(int $maxAttempts) : AbstractJob
Parameters
- $maxAttempts : int
Return values
AbstractJobsetTimeout()
Set soft execution timeout
public
setTimeout(int $seconds) : AbstractJob
Parameters
- $seconds : int
Return values
AbstractJobstart()
Start job
public
start() : AbstractJob
Return values
AbstractJobbuildExecProcess()
Build the Process instance for this job's exec command, without running it. Split out from runExec() purely so a test can construct one and inspect its configured timeout directly, without actually executing a command.
protected
buildExecProcess() : Process
Return values
ProcessdescribeFromCommand()
Borrow a job description from the dispatched command, if it has one and the job was not given one explicitly. A command already documents itself, so a queued command job need not be anonymous in the registry.
protected
describeFromCommand(mixed $dispatchable) : void
Guarded by instanceof rather than a hard dependency: pop-console arrives transitively through popphp, and instanceof against a missing class is simply false rather than an error.
Parameters
- $dispatchable : mixed
loadCallable()
Load callable
protected
loadCallable([Application|null $application = null ]) : mixed
Parameters
- $application : Application|null = null
Tags
runCommand()
Run application command
protected
runCommand(Application $application) : mixed
Parameters
- $application : Application
runExec()
Run CLI executable command
protected
runExec() : mixed