Set up cron jobs
Back to home
On this page
Cron jobs allow you to run scheduled tasks at specified times or intervals.
While you can run your own custom tasks, Laravel provides a scheduler to simplify the implementation. To implement it, see the Laravel Task Scheduling documentation.
Set up a cron job
To set up a cron job, update your Upsun configuration as follows:
applications:
myapp:
[...]
crons:
snapshot:
spec: "* * * * *"
commands:
start: |
php artisan schedule:run >> /dev/null 2>&1
Run cron jobs based on environment type
To run a command in a cron hook for specific environment types,
use the PLATFORM_ENVIRONMENT_TYPE
environment variable:
applications:
myapp:
[...]
crons:
snapshot:
spec: 0 5 * * *
commands:
start: |
# only run for the production environment, aka main branch
if [ "$PLATFORM_ENVIRONMENT_TYPE" = "production" ]; then
php artisan schedule:run >> /dev/null 2>&1
fi
Run the Laravel scheduler every minute
Cron job execution on the default Upsun offering are limited to once every 5 minutes. For more information, see the documentation on crons.
However, you can add a worker and specify a start command that runs the scheduler every minute. To do so, use the following configuration:
applications:
[...]
APP_NAME:
[...]
workers:
scheduler:
commands:
start: |
php artisan schedule:work
Warning
Web and worker containers don’t share mount targets. You can’t share files between those containers using the filesystem. To share data between containers, use services.