The timer() function and its helper functions pause workflow execution for a specified amount of time. These are essential for implementing delays, timeouts, and scheduled operations.
timer()
Pauses workflow execution for a specified duration.
Signature
function timer(int|string|CarbonInterval $seconds): PromiseInterface
Parameters
seconds
int|string|CarbonInterval
The duration to wait. Can be:
- An integer (seconds)
- A string duration (e.g., “5 minutes”, “2 hours”)
- A CarbonInterval instance
Returns
PromiseInterface
React\Promise\PromiseInterface
A promise that resolves after the specified duration
Usage
use Workflow\Workflow;
use function Workflow\{timer, activity};
class DelayedWorkflow extends Workflow
{
public function execute()
{
// Wait for 5 seconds
yield timer(5);
// Wait using string duration
yield timer('2 minutes');
$result = yield activity(TestActivity::class);
return $result;
}
}
Time Helper Functions
Convenience functions for common time durations.
seconds()
function seconds(int $seconds): PromiseInterface
Number of seconds to wait
use function Workflow\seconds;
yield seconds(30); // Wait 30 seconds
minutes()
function minutes(int $minutes): PromiseInterface
Number of minutes to wait
use function Workflow\minutes;
yield minutes(5); // Wait 5 minutes
hours()
function hours(int $hours): PromiseInterface
use function Workflow\hours;
yield hours(2); // Wait 2 hours
days()
function days(int $days): PromiseInterface
use function Workflow\days;
yield days(1); // Wait 1 day
weeks()
function weeks(int $weeks): PromiseInterface
use function Workflow\weeks;
yield weeks(1); // Wait 1 week
months()
function months(int $months): PromiseInterface
use function Workflow\months;
yield months(1); // Wait 1 month
years()
function years(int $years): PromiseInterface
use function Workflow\years;
yield years(1); // Wait 1 year
Complete Example
use Workflow\Workflow;
use function Workflow\{seconds, minutes, hours, days, activity};
class ScheduledTasksWorkflow extends Workflow
{
public function execute()
{
// Immediate task
yield activity(InitialTaskActivity::class);
// Wait 30 seconds
yield seconds(30);
yield activity(QuickFollowUpActivity::class);
// Wait 5 minutes
yield minutes(5);
yield activity(ShortDelayActivity::class);
// Wait 1 hour
yield hours(1);
yield activity(HourlyTaskActivity::class);
// Wait 1 day
yield days(1);
yield activity(DailyTaskActivity::class);
return 'completed';
}
}