Skip to content

Cron & Scheduler

Laravel Scheduler allows you to define scheduled tasks in code rather than in the crontab.

Add a single cron entry to run the Laravel scheduler:

Terminal window
* * * * * cd /var/www/xetasuite-core && php artisan schedule:run >> /dev/null 2>&1
Terminal window
crontab -e

Add the line above.

Tasks are defined in routes/console.php:

use Illuminate\Support\Facades\Schedule;
// Clean expired sessions
Schedule::command('session:gc')->daily();
// Prune old failed jobs
Schedule::command('queue:prune-failed --hours=48')->daily();
// Daily backup
Schedule::command('backup:run')->dailyAt('02:00');
// Clean old backups
Schedule::command('backup:clean')->dailyAt('03:00');
Terminal window
php artisan schedule:list
Terminal window
php artisan schedule:run
Terminal window
php artisan backup:run

Edit config/backup.php:

'backup' => [
'name' => env('APP_NAME', 'xetasuite'),
'source' => [
'files' => [
'include' => [base_path()],
'exclude' => [
base_path('vendor'),
base_path('node_modules'),
],
],
'databases' => ['pgsql'],
],
'destination' => [
'disks' => ['s3'], // or 'local'
],
],
Terminal window
# Run backup
php artisan backup:run
# Run backup (database only)
php artisan backup:run --only-db
# List backups
php artisan backup:list
# Clean old backups
php artisan backup:clean
Terminal window
php artisan schedule:list
Terminal window
tail -f storage/logs/laravel.log
Terminal window
php artisan queue:failed