CallbackEvent
class CallbackEvent extends Event
Traits
Constants
| protected EXIT_CODE_CONTEXT_KEY_PREFIX |
Context key prefix for the current run's exit code. |
| protected PROCESS_CONTEXT_KEY_PREFIX |
Context key prefix for the current run's process. |
| protected SKIPPED_BECAUSE_OVERLAPPING_CONTEXT_KEY_PREFIX |
Context key prefix for the current run's overlap skip state. |
| protected CALLBACK_CONTEXT_KEY_PREFIX |
Context key prefix for the current callback invocation. |
Properties
| static protected array | $macros | The registered string macros. |
from Macroable |
| string | $expression | The cron expression representing the event's frequency. |
from ManagesAttributes |
| int|null | $repeatSeconds | How often to repeat the event during a minute. |
from ManagesAttributes |
| DateTimeZone|string|null | $timezone | The timezone the date should be evaluated on. |
from ManagesAttributes |
| string|null | $user | The user the command should run as. |
from ManagesAttributes |
| array | $environments | The list of environments the command should run under. |
from ManagesAttributes |
| bool | $evenInMaintenanceMode | Indicates if the command should run in maintenance mode. |
from ManagesAttributes |
| bool | $evenWhenPaused | Indicates if the command should run when the scheduler is paused. |
from ManagesAttributes |
| bool | $withoutOverlapping | Indicates if the command should not overlap itself. |
from ManagesAttributes |
| bool | $releaseOnTerminationSignals | Indicates if the event mutex should be released on termination signals. |
from ManagesAttributes |
| bool | $onOneServer | Indicates if the command should only be allowed to run on one server for each cron expression. |
from ManagesAttributes |
| int | $expiresAt | The number of minutes the mutex should be valid. |
from ManagesAttributes |
| bool | $runInBackground | Indicates if the command should run in the background. |
from ManagesAttributes |
| protected array | $filters | The array of filter callbacks. |
from ManagesAttributes |
| protected array | $rejects | The array of reject callbacks. |
from ManagesAttributes |
| string|null | $description | The human readable description of the event. |
from ManagesAttributes |
| array | $attributes | The arbitrary attributes assigned to the event. |
from ManagesAttributes |
| string|null | $command | The command string. |
from Event |
| string|null | $output | The location that output should be sent to. |
from Event |
| bool | $shouldAppendOutput | Indicates whether output should be appended. |
from Event |
| protected array | $beforeCallbacks | The array of callbacks to be run before the event is started. |
from Event |
| protected array | $afterCallbacks | The array of callbacks to be run after the event is finished. |
from Event |
| Closure|null | $mutexNameResolver | The mutex name resolver callback. |
from Event |
| CarbonInterface|null | $lastChecked | The last time the event was checked for eligibility to run. |
from Event |
| int|null | $exitCode | The exit status code of the command. |
from Event |
| bool | $isSystem | Determines if the event is system command. |
from Event |
| protected bool | $ensureOutputIsBeingCaptured | Determines if output should be captured. |
from Event |
| bool | $skippedBecauseOverlapping | Indicates whether the execution was skipped due to the mutex already being reserved. |
from Event |
| protected bool | $mutexAcquired | Indicates whether this event currently owns the overlapping mutex. |
from Event |
| protected callable|string | $callback | The callback to call. |
|
| protected array | $parameters | The parameters to pass to the method. |
Methods
Mix another object into the class.
Dynamically handle calls to the class.
Dynamically handle calls to the class.
Set which user the command should run as.
Limit the environments the command should run in.
State that the command should run even in maintenance mode.
State that the command should run even when the scheduler is paused.
Do not allow the event to overlap each other.
Allow the event to only run on one server for each cron expression.
Indicate that the callback should run in the background.
Register a callback to further filter the schedule.
Register a callback to further filter the schedule.
Set the human-friendly description of the event.
Set the human-friendly description of the event.
Set arbitrary attributes to store with the event.
The Cron expression representing the event's frequency.
Schedule the event to run between start and end time.
Schedule the event to not run between start and end time.
Schedule the event to run every two seconds.
Schedule the event to run every five seconds.
Schedule the event to run every ten seconds.
Schedule the event to run every fifteen seconds.
Schedule the event to run every twenty seconds.
Schedule the event to run every thirty seconds.
Schedule the event to run multiple times per minute.
Schedule the event to run every two minutes.
Schedule the event to run every three minutes.
Schedule the event to run every four minutes.
Schedule the event to run every five minutes.
Schedule the event to run every ten minutes.
Schedule the event to run every fifteen minutes.
Schedule the event to run every thirty minutes.
Schedule the event to run hourly at a given offset in the hour.
Schedule the event to run every odd hour.
Schedule the event to run every two hours.
Schedule the event to run every three hours.
Schedule the event to run every four hours.
Schedule the event to run every six hours.
Schedule the event to run daily at a given time (10:00, 19:30, etc).
Schedule the event to run twice daily.
Schedule the event to run twice daily at a given offset.
Schedule the event to run at the given minutes and hours.
Schedule the event to run only on Wednesdays.
Schedule the event to run weekly on a given day and time.
Schedule the event to run monthly on a given day and time.
Schedule the event to run twice monthly at a given time.
Schedule the event to run on the last day of the month.
Schedule the event to run on specific days of the month.
Schedule the event to run quarterly on a given day and time.
Schedule the event to run yearly on a given month, day, and time.
Set the days of the week the command should run on.
Splice the given value into the given position of the expression.
Get the class name of the first parameter of the given Closure.
Get the class names of the first parameter of the given Closure, including union types.
Get the class names / types of the parameters of the given Closure.
Get the class names / types of the return type of the given Closure.
Call the given Closure with this instance then return the instance.
Create a new event instance.
Determine if the event should skip because another process is overlapping.
Determine if the event has been configured to repeat multiple times per minute.
Mark the command process as finished and run callbacks/cleanup.
Determine if the given event should run based on the Cron expression at the given time.
Determine if the event runs in the given environment.
Send the output of the command to a given location.
Append the output of the command to a given location.
E-mail the results of the scheduled operation.
E-mail the results of the scheduled operation if it produces output.
E-mail the results of the scheduled operation if it fails.
E-mail the output of the event to the recipients.
Register a callback to ping a given URL before the job runs.
Register a callback to ping a given URL before the job runs if the given condition is true.
Register a callback to ping a given URL after the job runs if the given condition is true.
Register a callback to ping a given URL if the operation succeeds.
Register a callback to ping a given URL if the operation succeeds and if the given condition is true.
Register a callback to ping a given URL if the operation fails.
Register a callback to ping a given URL if the operation fails and if the given condition is true.
Register a callback that uses the output after the job runs.
Register a callback that uses the output if the operation succeeds.
Register a callback that uses the output if the operation fails.
Get a callback that provides output.
Call the given event callback.
Get the summary of the event for display.
Determine the next due date for an event.
Get the mutex name for the scheduled command.
Release the event mutex if this process owns it during signal termination.
Clear the mutex for the event.
Determine if this event's most recent run in the current coroutine was skipped due to overlapping.
Get the context key for this event's overlap skip state.
Format the given command string with a normalized PHP binary path.
Get the context key for this callback event's current invocation.
Details
in
Macroable at line 28
static void
macro(string $name, callable|object $macro)
Register a custom macro.
Boot-only. Macros persist in a static property for the worker lifetime and apply to every subsequent call on the macroable class.
in
Macroable at line 41
static void
mixin(object $mixin, bool $replace = true)
Mix another object into the class.
Boot-only. Delegates to macro() for each method; registered macros persist in a static property for the worker lifetime.
in
Macroable at line 57
static bool
hasMacro(string $name)
Check if macro is registered.
in
Macroable at line 68
static void
flushMacros()
Flush the existing macros.
Boot or tests only. Clears worker-wide macros; concurrent coroutines may resolve different methods depending on timing.
in
Macroable at line 78
static mixed
__callStatic(string $method, array $parameters)
Dynamically handle calls to the class.
in
Macroable at line 103
mixed
__call(string $method, array $parameters)
Dynamically handle calls to the class.
in
ManagesAttributes at line 95
ManagesAttributes
user(string $user)
Set which user the command should run as.
in
ManagesAttributes at line 107
ManagesAttributes
environments(mixed $environments)
Limit the environments the command should run in.
in
ManagesAttributes at line 117
ManagesAttributes
evenInMaintenanceMode()
State that the command should run even in maintenance mode.
in
ManagesAttributes at line 127
ManagesAttributes
evenWhenPaused()
State that the command should run even when the scheduler is paused.
at line 146
ManagesAttributes
withoutOverlapping(int $expiresAt = 1440, bool $releaseOnTerminationSignals = true)
Do not allow the event to overlap each other.
The expiration time of the underlying cache lock may be specified in minutes.
at line 162
ManagesAttributes
onOneServer()
Allow the event to only run on one server for each cron expression.
at line 108
ManagesAttributes
runInBackground()
Indicate that the callback should run in the background.
in
ManagesAttributes at line 174
ManagesAttributes
when(bool|callable $callback)
Register a callback to further filter the schedule.
in
ManagesAttributes at line 186
ManagesAttributes
skip(bool|callable $callback)
Register a callback to further filter the schedule.
in
ManagesAttributes at line 198
ManagesAttributes
name(string $description)
Set the human-friendly description of the event.
in
ManagesAttributes at line 206
ManagesAttributes
description(string $description)
Set the human-friendly description of the event.
in
ManagesAttributes at line 216
ManagesAttributes
withAttributes(array $attributes)
Set arbitrary attributes to store with the event.
in
ManagesFrequencies at line 20
ManagesFrequencies
cron(string $expression)
The Cron expression representing the event's frequency.
in
ManagesFrequencies at line 30
ManagesFrequencies
between(string $startTime, string $endTime)
Schedule the event to run between start and end time.
in
ManagesFrequencies at line 38
ManagesFrequencies
unlessBetween(string $startTime, string $endTime)
Schedule the event to not run between start and end time.
in
ManagesFrequencies at line 70
ManagesFrequencies
everySecond()
Schedule the event to run every second.
in
ManagesFrequencies at line 78
ManagesFrequencies
everyTwoSeconds()
Schedule the event to run every two seconds.
in
ManagesFrequencies at line 86
ManagesFrequencies
everyFiveSeconds()
Schedule the event to run every five seconds.
in
ManagesFrequencies at line 94
ManagesFrequencies
everyTenSeconds()
Schedule the event to run every ten seconds.
in
ManagesFrequencies at line 102
ManagesFrequencies
everyFifteenSeconds()
Schedule the event to run every fifteen seconds.
in
ManagesFrequencies at line 110
ManagesFrequencies
everyTwentySeconds()
Schedule the event to run every twenty seconds.
in
ManagesFrequencies at line 118
ManagesFrequencies
everyThirtySeconds()
Schedule the event to run every thirty seconds.
in
ManagesFrequencies at line 128
protected ManagesFrequencies
repeatEvery(int $seconds)
Schedule the event to run multiple times per minute.
in
ManagesFrequencies at line 146
ManagesFrequencies
everyMinute()
Schedule the event to run every minute.
in
ManagesFrequencies at line 154
ManagesFrequencies
everyTwoMinutes()
Schedule the event to run every two minutes.
in
ManagesFrequencies at line 162
ManagesFrequencies
everyThreeMinutes()
Schedule the event to run every three minutes.
in
ManagesFrequencies at line 170
ManagesFrequencies
everyFourMinutes()
Schedule the event to run every four minutes.
in
ManagesFrequencies at line 178
ManagesFrequencies
everyFiveMinutes()
Schedule the event to run every five minutes.
in
ManagesFrequencies at line 186
ManagesFrequencies
everyTenMinutes()
Schedule the event to run every ten minutes.
in
ManagesFrequencies at line 194
ManagesFrequencies
everyFifteenMinutes()
Schedule the event to run every fifteen minutes.
in
ManagesFrequencies at line 202
ManagesFrequencies
everyThirtyMinutes()
Schedule the event to run every thirty minutes.
in
ManagesFrequencies at line 210
ManagesFrequencies
hourly()
Schedule the event to run hourly.
in
ManagesFrequencies at line 220
ManagesFrequencies
hourlyAt(array|int|string $offset)
Schedule the event to run hourly at a given offset in the hour.
in
ManagesFrequencies at line 228
ManagesFrequencies
everyOddHour(array|int|string $offset = 0)
Schedule the event to run every odd hour.
in
ManagesFrequencies at line 236
ManagesFrequencies
everyTwoHours(array|int|string $offset = 0)
Schedule the event to run every two hours.
in
ManagesFrequencies at line 244
ManagesFrequencies
everyThreeHours(array|int|string $offset = 0)
Schedule the event to run every three hours.
in
ManagesFrequencies at line 252
ManagesFrequencies
everyFourHours(array|int|string $offset = 0)
Schedule the event to run every four hours.
in
ManagesFrequencies at line 260
ManagesFrequencies
everySixHours(array|int|string $offset = 0)
Schedule the event to run every six hours.
in
ManagesFrequencies at line 268
ManagesFrequencies
daily()
Schedule the event to run daily.
in
ManagesFrequencies at line 276
ManagesFrequencies
at(string $time)
Schedule the command at a given time.
in
ManagesFrequencies at line 284
ManagesFrequencies
dailyAt(string $time)
Schedule the event to run daily at a given time (10:00, 19:30, etc).
in
ManagesFrequencies at line 300
ManagesFrequencies
twiceDaily(int $first = 1, int $second = 13)
Schedule the event to run twice daily.
in
ManagesFrequencies at line 312
ManagesFrequencies
twiceDailyAt(int $first = 1, int $second = 13, int $offset = 0)
Schedule the event to run twice daily at a given offset.
in
ManagesFrequencies at line 325
protected
hourBasedSchedule(array|int|string $minutes, array|int|string $hours)
Schedule the event to run at the given minutes and hours.
in
ManagesFrequencies at line 338
ManagesFrequencies
weekdays()
Schedule the event to run only on weekdays.
in
ManagesFrequencies at line 346
ManagesFrequencies
weekends()
Schedule the event to run only on weekends.
in
ManagesFrequencies at line 354
ManagesFrequencies
mondays()
Schedule the event to run only on Mondays.
in
ManagesFrequencies at line 362
ManagesFrequencies
tuesdays()
Schedule the event to run only on Tuesdays.
in
ManagesFrequencies at line 370
ManagesFrequencies
wednesdays()
Schedule the event to run only on Wednesdays.
in
ManagesFrequencies at line 378
ManagesFrequencies
thursdays()
Schedule the event to run only on Thursdays.
in
ManagesFrequencies at line 386
ManagesFrequencies
fridays()
Schedule the event to run only on Fridays.
in
ManagesFrequencies at line 394
ManagesFrequencies
saturdays()
Schedule the event to run only on Saturdays.
in
ManagesFrequencies at line 402
ManagesFrequencies
sundays()
Schedule the event to run only on Sundays.
in
ManagesFrequencies at line 410
ManagesFrequencies
weekly()
Schedule the event to run weekly.
in
ManagesFrequencies at line 422
ManagesFrequencies
weeklyOn(mixed $dayOfWeek, string $time = '0:0')
Schedule the event to run weekly on a given day and time.
in
ManagesFrequencies at line 432
ManagesFrequencies
monthly()
Schedule the event to run monthly.
in
ManagesFrequencies at line 444
ManagesFrequencies
monthlyOn(int $dayOfMonth = 1, string $time = '0:0')
Schedule the event to run monthly on a given day and time.
in
ManagesFrequencies at line 457
ManagesFrequencies
twiceMonthly(int $first = 1, int $second = 16, string $time = '0:0')
Schedule the event to run twice monthly at a given time.
in
ManagesFrequencies at line 469
ManagesFrequencies
lastDayOfMonth(string $time = '0:0')
Schedule the event to run on the last day of the month.
in
ManagesFrequencies at line 481
ManagesFrequencies
daysOfMonth(int|array ...$days)
Schedule the event to run on specific days of the month.
in
ManagesFrequencies at line 494
ManagesFrequencies
quarterly()
Schedule the event to run quarterly.
in
ManagesFrequencies at line 505
ManagesFrequencies
quarterlyOn(int $dayOfQuarter = 1, string $time = '0:0')
Schedule the event to run quarterly on a given day and time.
in
ManagesFrequencies at line 516
ManagesFrequencies
yearly()
Schedule the event to run yearly.
in
ManagesFrequencies at line 527
ManagesFrequencies
yearlyOn(int $month = 1, int|string $dayOfMonth = 1, string $time = '0:0')
Schedule the event to run yearly on a given month, day, and time.
in
ManagesFrequencies at line 540
ManagesFrequencies
days(mixed $days)
Set the days of the week the command should run on.
in
ManagesFrequencies at line 550
ManagesFrequencies
timezone(DateTimeZone|UnitEnum|string $timezone)
Set the timezone the date should be evaluated on.
in
ManagesFrequencies at line 562
protected ManagesFrequencies
spliceIntoPosition(int $position, int|string $value)
Splice the given value into the given position of the expression.
in
ReflectsClosures at line 25
protected string
firstClosureParameterType(Closure $closure)
Get the class name of the first parameter of the given Closure.
in
ReflectsClosures at line 48
protected array
firstClosureParameterTypes(Closure $closure)
Get the class names of the first parameter of the given Closure, including union types.
in
ReflectsClosures at line 74
protected array
closureParameterTypes(Closure $closure)
Get the class names / types of the parameters of the given Closure.
in
ReflectsClosures at line 94
protected array
closureReturnTypes(Closure $closure)
Get the class names / types of the return type of the given Closure.
in
Tappable at line 15
mixed
tap(callable|null $callback = null)
Call the given Closure with this instance then return the instance.
at line 43
__construct(EventMutex $mutex, callable|string $callback, array $parameters = [], DateTimeZone|string|null $timezone = null)
Create a new event instance.
at line 62
mixed
run(Container $container)
Run the callback event.
at line 98
bool
shouldSkipDueToOverlapping()
Determine if the event should skip because another process is overlapping.
in
Event at line 223
bool
isRepeatable()
Determine if the event has been configured to repeat multiple times per minute.
in
Event at line 231
bool
shouldRepeatNow()
Determine if the event is ready to repeat.
at line 116
protected int
execute(Container $container)
Run the callback.
in
Event at line 281
protected string|null
getProcessOutput()
Get the output of the system command process.
in
Event at line 293
void
finish(Container $container, int $exitCode)
Mark the command process as finished and run callbacks/cleanup.
in
Event at line 325
void
callBeforeCallbacks(Container $container)
Call all of the "before" callbacks for the event.
in
Event at line 335
void
callAfterCallbacks(Container $container)
Call all of the "after" callbacks for the event.
in
Event at line 345
bool
isDue(Application $app)
Determine if the given event should run based on the Cron expression.
in
Event at line 353
bool
isDueAt(Application $app, DateTimeInterface $time)
Determine if the given event should run based on the Cron expression at the given time.
in
Event at line 366
bool
runsInMaintenanceMode()
Determine if the event runs in maintenance mode.
in
Event at line 374
bool
runsWhenPaused()
Determine if the event runs when the scheduler is paused.
in
Event at line 382
protected bool
expressionPasses(DateTimeInterface $time)
Determine if the Cron expression passes.
in
Event at line 397
bool
runsInEnvironment(string $environment)
Determine if the event runs in the given environment.
in
Event at line 406
bool
filtersPass(Application $app)
Determine if the filters pass for the event.
in
Event at line 438
Event
sendOutputTo(string $location, bool $append = false)
Send the output of the command to a given location.
in
Event at line 450
void
writeOutput(Container $container)
Write the output of the command to the destination file.
in
Event at line 485
Event
appendOutputTo(string $location)
Append the output of the command to a given location.
in
Event at line 495
Event
emailOutputTo(mixed $addresses, bool $onlyIfOutputExists = true)
E-mail the results of the scheduled operation.
in
Event at line 513
Event
emailWrittenOutputTo(mixed $addresses)
E-mail the results of the scheduled operation if it produces output.
in
Event at line 523
Event
emailOutputOnFailure(mixed $addresses)
E-mail the results of the scheduled operation if it fails.
in
Event at line 537
protected void
ensureOutputIsBeingCaptured()
Ensure that the command output is being captured.
in
Event at line 548
protected void
emailOutput(Mailer $mailer, Filesystem $filesystem, mixed $addresses, bool $onlyIfOutputExists = true)
E-mail the output of the event to the recipients.
in
Event at line 568
protected string
getEmailSubject()
Get the e-mail subject line for output results.
in
Event at line 580
Event
pingBefore(string $url)
Register a callback to ping a given URL before the job runs.
in
Event at line 588
Event
pingBeforeIf(bool $value, string $url)
Register a callback to ping a given URL before the job runs if the given condition is true.
in
Event at line 596
Event
thenPing(string $url)
Register a callback to ping a given URL after the job runs.
in
Event at line 604
Event
thenPingIf(bool $value, string $url)
Register a callback to ping a given URL after the job runs if the given condition is true.
in
Event at line 612
Event
pingOnSuccess(string $url)
Register a callback to ping a given URL if the operation succeeds.
in
Event at line 620
Event
pingOnSuccessIf(bool $value, string $url)
Register a callback to ping a given URL if the operation succeeds and if the given condition is true.
in
Event at line 628
Event
pingOnFailure(string $url)
Register a callback to ping a given URL if the operation fails.
in
Event at line 636
Event
pingOnFailureIf(bool $value, string $url)
Register a callback to ping a given URL if the operation fails and if the given condition is true.
in
Event at line 644
protected Closure
pingCallback(string $url)
Get the callback that pings the given URL.
in
Event at line 658
protected ClientInterface
getHttpClient(Container $container)
Get the Guzzle HTTP client to use to send pings.
in
Event at line 674
Event
before(Closure $callback)
Register a callback to be called before the operation.
in
Event at line 684
Event
after(Closure $callback)
Register a callback to be called after the operation.
in
Event at line 692
Event
then(Closure $callback)
Register a callback to be called after the operation.
in
Event at line 708
Event
thenWithOutput(Closure $callback, bool $onlyIfOutputExists = false)
Register a callback that uses the output after the job runs.
in
Event at line 718
Event
onSuccess(Closure $callback)
Register a callback to be called if the operation succeeds.
in
Event at line 736
Event
onSuccessWithOutput(Closure $callback, bool $onlyIfOutputExists = false)
Register a callback that uses the output if the operation succeeds.
in
Event at line 746
Event
onFailure(Closure $callback)
Register a callback to be called if the operation fails.
in
Event at line 764
Event
onFailureWithOutput(Closure $callback, bool $onlyIfOutputExists = false)
Register a callback that uses the output if the operation fails.
in
Event at line 774
protected Closure
withOutputCallback(Closure $callback, bool $onlyIfOutputExists = false)
Get a callback that provides output.
in
Event at line 788
protected string
readOutput(Filesystem $filesystem)
Read the captured event output.
in
Event at line 802
protected mixed
callEventCallback(Container $container, callable $callback, array $parameters = [])
Call the given event callback.
in
Event at line 819
protected array
eventParametersForCallback(Closure $callback)
Get the event parameters for the given callback.
at line 176
string
getSummaryForDisplay()
Get the summary of the event for display.
in
Event at line 847
CarbonInterface
nextRunDate(DateTimeInterface|string $currentTime = 'now', int $nth = 0, bool $allowCurrentDate = false)
Determine the next due date for an event.
in
Event at line 856
string
getExpression()
Get the Cron expression for the event.
in
Event at line 864
Event
preventOverlapsUsing(EventMutex $mutex)
Set the event mutex implementation to be used.
at line 188
string
mutexName()
Get the mutex name for the scheduled command.
in
Event at line 889
Event
createMutexNameUsing(Closure|string $mutexName)
Set the mutex name or name resolver callback.
in
Event at line 901
void
releaseMutexOnTerminationSignal()
Release the event mutex if this process owns it during signal termination.
at line 196
protected void
removeMutex()
Clear the mutex for the event.
in
Event at line 925
protected void
setExitCode(int $exitCode)
Set the exit code for the current event run.
in
Event at line 937
int|null
exitCode()
Get the exit code for the current event run.
in
Event at line 945
bool
wasSkippedDueToOverlapping()
Determine if this event's most recent run in the current coroutine was skipped due to overlapping.
in
Event at line 956
protected string
exitCodeContextKey()
Get the context key for this event's current run.
in
Event at line 964
protected string
processContextKey()
Get the context key for this event's current process.
in
Event at line 972
protected string
skippedBecauseOverlappingContextKey()
Get the context key for this event's overlap skip state.
in
Event at line 980
static string
normalizeCommand(string $command)
Format the given command string with a normalized PHP binary path.
in
Event at line 994
static void
flushState()
Flush all static state.
at line 206
protected string
callbackContextKey()
Get the context key for this callback event's current invocation.