how to use Cron Job Task Scheduling using LARAVEL 10

Spread the love

Hello Guys,

Learn to Implement Cron Job Task Scheduling in Laravel 10 In this tutorial, we’ll show you how to set up cron job task scheduling in Laravel 10. This post provides a comprehensive guide on scheduling cron jobs using Laravel 10, including a clear explanation of establishing cron jobs in this framework. Dive into the details below.

Why are Cron Jobs Necessary in Laravel 10? Discover the significance of cron jobs and their advantages in Laravel 10. If you’re wondering why you need to configure cron jobs, let us clarify. Cron jobs are essential for automating tasks such as sending email notifications and updates for products or properties. By defining logic for daily, hourly, or other intervals, you can execute these tasks automatically.

For example, you can create a basic cron job to fetch users from an API and add new members to your database. We’ll demonstrate how to schedule tasks to run at various intervals, including every minute, allowing you to customize your logic as needed. Additionally, we’ll guide you through setting up a cron job on your server using Laravel 10.

Explore the world of Laravel 10 cron jobs and their benefits with our step-by-step tutorial.

Therefore let’s complete the Cron Job Task Scheduling example by following the steps below.

Step 1: Install Laravel 10

While it’s not mandatory, you have the option to execute the following command in case you haven’t already established your Laravel application:

Also Read: How to Get Database Name using Laravel?

composer create-project laravel/laravel example-app

Step 2: Create New Command

In this phase, it’s essential to create a custom command. We’ll employ a cron job for task scheduling to execute this unique command. To create a new custom command, simply run the following command.

php artisan make:command DemoCron --command=demo:cron

Optimize your Command file with these key adjustments.

Also Read: how to use Flash Message using LARAVEL 10

app/Console/Commands/DemoCron.php
<?php
  
namespace App\Console\Commands;
  
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Http;
use App\Models\User;
  
class DemoCron extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'demo:cron';
  
    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';
  
    /**
     * Execute the console command.
     */
    public function handle(): void
    {
        info("Cron Job running at ". now());
    
        /*------------------------------------------
        --------------------------------------------
        Write Your Logic Here....
        I am getting users and create new users if not exist....
        --------------------------------------------
        --------------------------------------------*/
        $response = Http::get('https://jsonplaceholder.typicode.com/users');
        
        $users = $response->json();
    
        if (!empty($users)) {
            foreach ($users as $key => $user) {
                if(!User::where('email', $user['email'])->exists() ){
                    User::create([
                        'name' => $user['name'],
                        'email' => $user['email'],
                        'password' => bcrypt('123456789')
                    ]);
                }
            }
        }
    }
}

Step 3: Register as Task Scheduler

In this phase, it’s crucial to specify our commands within the Kernel.php file along with the desired execution time, as demonstrated by the following functions.

Also Read: Guzzle HTTP Request Example using LARAVEL 10

->everyMinute();Run the task every minute
->everyFiveMinutes();Run the task every five minutes
->everyTenMinutes();Run the task every ten minutes
->everyFifteenMinutes();Run the task every fifteen minutes
->everyThirtyMinutes();Run the task every thirty minutes
->hourly();Run the task every hour
->hourlyAt(17);Run the task every hour at 17 mins past the hour
->daily();Run the task every day at midnight
->dailyAt(’13:00′);Run the task every day at 13:00
->twiceDaily(1, 13);Run the task daily at 1:00 & 13:00
->weekly();Run the task every week
->weeklyOn(1, ‘8:00’);Run the task every week on Tuesday at 8:00
->monthly();Run the task every month
->monthlyOn(4, ’15:00′);Run the task every month on the 4th at 15:00
->quarterly();Run the task every quarter
->yearly();Run the task every year
->timezone(‘America/New_York’);Set the timezone
app/Console/Kernel.php
<?php
  
namespace App\Console;
  
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
  
class Kernel extends ConsoleKernel
{
    /**
     * Define the application's command schedule.
     */
    protected function schedule(Schedule $schedule): void
    {
        $schedule->command('demo:cron')
                 ->everyMinute();
    }
  
    /**
     * Register the commands for the application.
     */
    protected function commands(): void
    {
        $this->load(__DIR__.'/Commands');
  
        require base_path('routes/console.php');
    }
}

Step 4: Run Scheduler Command For Test

We are fully ready to initiate our cron job, enabling you to perform a manual verification by employing the subsequent cron command. Proceed to execute the provided command:

Also Read: How To Generate Invoice PDF In Laravel 10

php artisan schedule:run

Discover the printed content in your log file by examining the script’s execution results. When you access your log file, you’ll find the following information:

storage/logs/laravel.php
[2023-03-03 04:31:06] local.INFO: Cron Job running at 2023-03-03 04:31:06
[2023-03-03 04:32:06] local.INFO: Cron Job running at 2023-03-03 04:32:07  
[2023-03-03 04:33:06] local.INFO: Cron Job running at 2023-03-03 04:33:06

Laravel 10 Cron Job Setup on Server

In this guide, we’ll walk you through the process of setting up a cron job command on your server. If you’re using Ubuntu Server, you’re in luck, as Crontab is pre-installed. Follow the steps below to add a new item to your cron job effortlessly.

crontab -e

Include the following line in your crontab file immediately. Make sure you have accurately configured your project path within it.

Also Read: How to Drop Soft Delete from Table using Migration in LARAVEL?

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

Feel free to verify your server status now.

Uncover the ultimate insights in our collection, your gateway to the best Laravel blog content.

Leave a Comment