Używanie Harmonogramu Cron w Laravel do automatyzacji zadań
Zadanie crona przydaje się do zautomatyzowania naszego zadania w określonym czasie w regularnych odstępach czasu. Laravel jest dostarczany z funkcją planowania zadań, która sprawia, że harmonogram crona jest bardzo łatwy. W przeszłości musieliśmy dodać osobny wpis dla każdego zadania cron. W Laravelu wystarczy dodać jedno polecenie, które automatycznie uruchomi wszystkie nasze zadania cron. Nie ma potrzeby dodawania osobnego wpisu dla każdego zadania. W tym artykule przyjrzymy się wykorzystaniu harmonogramu cron w Laravel, który pomaga nam zautomatyzować nasze zadania.
Dlaczego musimy uruchomić Crona?
Istnieje kilka przykładów, o których możemy wspomnieć, gdzie musimy uruchomić crona. Być może prowadzisz sklep internetowy i chcesz wysyłać użytkownikom oferty promocyjne. Lub masz witrynę członkowską i musisz wysłać użytkownikom wiadomość e-mail z przypomnieniem o okresie odnowienia subskrypcji. To są dwa przykłady, w których możemy użyć crona. Co robimy, to piszemy program, który może wykonać to zadanie i ustawiamy dla niego crona. Twój serwer będzie szukał czasu określonego dla crona i gdy ten czas nadejdzie, automatycznie uruchomi program. Nie musimy patrzeć na zegar i uruchamiać programu ręcznie.
Ten proces ułatwia nam życie. Możemy skupić się na innych ważnych rzeczach i zainwestować czas w mądrą rzecz.
Harmonogram crona w Laravel
W naszym artykule weźmy przykład ze świata rzeczywistego. Załóżmy, że mamy grupę użytkowników w naszej bazie danych Laravel. O północy musimy wysłać e-mail do wszystkich użytkowników z opisem naszej nowej oferty promocyjnej. Dzięki temu nasi użytkownicy są powiadamiani o nowych ofertach, a Twoja sprzedaż może przyciągnąć większą uwagę.
Zakładamy, że zapisałeś wszystkie informacje o swoim użytkowniku w tabeli „użytkownicy". Otrzymamy e-maile użytkowników z tej tabeli i wyślemy im e-mail. Oczywiście musimy napisać kod w taki sposób, aby uruchamiał się o północy.
Otwórz app/Console/Kernel.php
plik w swoim edytorze i dodaj model użytkownika oraz fasadę poczty do pliku.
<?php
namespace AppConsole;
use IlluminateConsoleSchedulingSchedule;
use IlluminateFoundationConsoleKernel as ConsoleKernel;
use AppUser; // User model
use Mail; // Mail Facade
class Kernel extends ConsoleKernel
{
....
Kernal
class ma metodę, w schedule
której musimy napisać jeden lub wiele harmonogramów. Ponieważ musimy wysłać e-mail do naszych użytkowników, piszemy kod w następujący sposób.
<?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
}
....
W powyższym kodzie pobieramy użytkowników z bazy danych i wysyłamy im e-mail za pomocą metody send fasady Mail. Tutaj musimy utworzyć mail.blade.php
pliki w resources/views/emails
katalogu.
mail.blade.php
Hi <strong>{{ $name }}</strong>,
<p>{{ $body }}</p>
Ponieważ naszym zadaniem jest wysłanie e-maila o północy, zastosowaliśmy tę daily()
metodę. Laravel zapewnia różne opcje częstotliwości harmonogramu, które można znaleźć na stronie dokumentacji.
Dodaj wpis Cron do swojego serwera
Na koniec, aby ustawić to zadanie crona na serwerze, powinieneś dodać poniższy wpis crona do swojego serwera.
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
Upewnij się, że poprawnie ustawiłeś ścieżkę swojego projektu. Ten Cron będzie wywoływał harmonogram poleceń Laravela co minutę. Automatycznie wykonuje polecenie harmonogram:uruchom i ocenia zaplanowane zadania oraz uruchamia zadania, które są należne.
Mamy nadzieję, że nauczyłeś się korzystać z harmonogramu crona w Laravel i zautomatyzować swoje zadania. Chcielibyśmy poznać Twoje przemyślenia w sekcji komentarzy poniżej.
Powiązane artykuły
- Wysyłanie wiadomości e-mail przez serwer SMTP Gmaila w Laravel
- Jak używać zdarzeń i nasłuchiwaczy Laravel w swojej aplikacji?
- Jak używać Laravel Passport do uwierzytelniania REST API?