Använda Cron Schema i Laravel för att automatisera uppgifter
Cron-jobb är användbart för att automatisera vår uppgift vid den angivna tiden med jämna mellanrum. Laravel levereras med en funktion för uppgiftsplanering vilket gör cron schema super enkelt. Tidigare måste vi lägga till en separat post för varje cron-jobb. I Laravel behöver vi bara lägga till ett kommando och det kör alla våra cron-jobb automatiskt. Det finns inget behov av att lägga till en separat post för varje uppgift. I den här artikeln studerar vi hur man använder cron schema i Laravel som hjälper oss att automatisera våra uppgifter.
Varför behöver vi köra kronan?
Det finns flera exempel vi kan nämna där vi behöver köra en cron. Du kanske driver en webbutik och du vill skicka kampanjerbjudanden till dina användare. Eller så har du en medlemswebbplats och du måste skicka e-postmeddelandet till användarna om deras förnyelseprenumerationsperiod. Det här är de två exemplen där vi kan använda Cron. Vad vi gör är att skriva ett program som kan utföra denna uppgift och ställa in en cron för den. Servern kommer att leta efter den angivna tiden för cron och när den tiden träffar kör programmet automatiskt. Vi behöver inte titta på klockan och köra programmet manuellt.
Denna process gör vårt liv enkelt. Vi kan fokusera på våra andra viktiga saker och investera tid i en klok sak.
Cron Schema i Laravel
För vår artikel, låt oss ta ett verkligt exempel. Låt oss säga att vi har en massa användare i vår Laravel-databas. Varje midnatt måste vi skicka ett e-postmeddelande till alla användare som beskriver vårt nya kampanjerbjudande. På så sätt får våra användare meddelanden om nya erbjudanden och din försäljning kan få mer uppmärksamhet.
Vi antar att du har lagrat all din användares information i tabellen ‘användare’. Vi kommer att få användarens e-postmeddelanden från den här tabellen och skicka dem ett e-postmeddelande. Naturligtvis måste vi skriva en kod på ett sätt som ska köras varje midnatt.
Öppna app/Console/Kernel.php
filen i din redigerare och lägg till användarmodellen och e-postfasaden i filen.
<?php
namespace AppConsole;
use IlluminateConsoleSchedulingSchedule;
use IlluminateFoundationConsoleKernel as ConsoleKernel;
use AppUser; // User model
use Mail; // Mail Facade
class Kernel extends ConsoleKernel
{
....
Kernal
klass har en metod schedule
där vi måste skriva en eller flera scheman. Eftersom vi behöver skicka ett e-postmeddelande till våra användare skriver vi koden enligt följande.
<?php
namespace AppConsole;
use IlluminateConsoleSchedulingSchedule;
use IlluminateFoundationConsoleKernel as ConsoleKernel;
use AppUser;
use Mail;
class Kernel extends ConsoleKernel
{
....
/**
* Define the application's command schedule.
*
* @param IlluminateConsoleSchedulingSchedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->call(function() {
$arr_users = User::all();
if(count($arr_users) > 0) {
foreach ($arr_users as $user) {
$name = $user->name;
$email = $user->email;
$data = array("name" => $name, "body" => "This is our new promotional offer");
Mail::send('emails.mail', $data, function($message) use ($name, $email) {
$message->to($email, $name)
->subject('New Offer Launched');
$message->from('[email protected]', 'Artisans Web');
});
}
}
})->daily();
// tou can add more schedules here
}
....
I koden ovan tar vi användare från databasen och skickar dem ett e-postmeddelande med hjälp av sändningsmetoden för Mail-fasaden. Här måste vi skapa mail.blade.php
filer under resources/views/emails
katalogen.
mail.blade.php
Hi <strong>{{ $name }}</strong>,
<p>{{ $body }}</p>
Eftersom vår uppgift är att skicka ett mejl vid midnatt använde vi daily()
metoden. Laravel erbjuder olika schemaläggningsfrekvensalternativ som du skulle få på dokumentationssidan.
Lägg till Cron-post till din server
Slutligen, för att ställa in detta cron-jobb på en server, bör du lägga till cron-posten nedan på din server.
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
Se till att du har ställt in projektets väg korrekt. Denna Cron kommer att ringa Laravel-kommandoschemaläggaren varje minut. Det kör automatiskt schema: kör kommandot och utvärdera dina schemalagda uppgifter och kör de uppgifter som ska betalas.
Vi hoppas att du kanske har lärt dig att använda cron schema i Laravel och automatisera dina uppgifter. Vi vill höra dina tankar i kommentarsektionen nedan.
relaterade artiklar
- Skicka e-post via Gmail SMTP-server i Laravel
- Hur du använder Laravel-evenemang och lyssnare i din ansökan
- Hur man använder Laravel Passport för REST API-autentisering