In Laravel, you can create a custom cron job using the Artisan
command make:command
. This will generate a new class in the app/Console/Commands
directory that extends the Illuminate\Console\Command
class.
Here are the steps to create a custom cron job:
Run this command to generate a new command
php artisan make:command MyCustomCronJob
This will create a new file called MyCustomCronJob.php
in the app/Console/Commands
directory. Open this file and update the $signature
property to define the name and arguments of your command. For example:
protected $signature = 'my:cronjob {--option}';
This defines a command named my:cronjob
with an optional --option
argument.
Update the handle()
method to define the logic for your cron job. This method will be called when your command is run by the cron scheduler. For example:
public function handle()
{
$option = $this->option('option');
// Your cron job logic here
}
This example retrieves the value of the --option
argument and executes some custom logic.
Register your command in the app/Console/Kernel.php
file. Add your command to the $commands
array in the protected $commands
property. For example:
protected $commands = [
Commands\MyCustomCronJob::class,
];
Schedule your custom cron job in the app/Console/Kernel.php
file. Add a new entry to the $schedule
property in the schedule()
method. For example:
protected function schedule(Schedule $schedule)
{
$schedule->command('my:cronjob')->everyMinute();
}
This schedules your custom cron job to run every minute. Replace everyMinute()
with any other available scheduling option as per your requirement.
That’s it! Your custom cron job is now registered and scheduled to run at the specified interval. You can test it by running the php artisan schedule:run
command in your terminal.