Skip to main content
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
seconds
int
Number of seconds to wait
use function Workflow\seconds;

yield seconds(30); // Wait 30 seconds

minutes()

function minutes(int $minutes): PromiseInterface
minutes
int
Number of minutes to wait
use function Workflow\minutes;

yield minutes(5); // Wait 5 minutes

hours()

function hours(int $hours): PromiseInterface
hours
int
Number of hours to wait
use function Workflow\hours;

yield hours(2); // Wait 2 hours

days()

function days(int $days): PromiseInterface
days
int
Number of days to wait
use function Workflow\days;

yield days(1); // Wait 1 day

weeks()

function weeks(int $weeks): PromiseInterface
weeks
int
Number of weeks to wait
use function Workflow\weeks;

yield weeks(1); // Wait 1 week

months()

function months(int $months): PromiseInterface
months
int
Number of months to wait
use function Workflow\months;

yield months(1); // Wait 1 month

years()

function years(int $years): PromiseInterface
years
int
Number of years to wait
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';
    }
}

Build docs developers (and LLMs) love