Ülesannete automatiseerimiseks Croni ajakava kasutamine Laravelis
Croni töö on kasulik meie ülesande automatiseerimiseks määratud aja jooksul korrapäraste ajavahemike järel. Laraveli laevadel on funktsioon ülesannete ajastamiseks, mis muudab croni ajakava ülilihtsaks. Varem peame iga croni töö jaoks lisama eraldi kirje. Laravelis peame lihtsalt lisama ühe käsu ja see käivitab kõik meie croni tööd automaatselt. Iga ülesande jaoks pole vaja eraldi kirjet lisada. Selles artiklis uurime Laraveli croni ajakava kasutamist, mis aitab meil ülesandeid automatiseerida.
Miks peame Croni käivitama?
On mitmeid näiteid, mida võime mainida, kui meil on vaja cron käivitada. Võimalik, et teil on veebipood ja soovite saata oma kasutajatele sooduspakkumisi. Või teil on liikmesuse veebisait ja peate kasutajatele saatma meeldetuletuse e-kirja nende pikendamise perioodi kohta. Need on kaks näidet, kus saame krooni kasutada. Mida me teeme, on see, et kirjutame programmi, mis suudab seda ülesannet täita, ja määrake sellele kroon. Teie server otsib croni jaoks määratud aega ja kui see aeg saabub, käivitab see programmi automaatselt. Me ei pea kella vaatama ja programmi käsitsi käivitama.
See protsess muudab meie elu lihtsaks. Saame keskenduda oma muudele olulistele asjadele ja investeerida aega tarkasse asja.
Croni ajakava Laravelis
Võtame oma artikli jaoks näite reaalsest maailmast. Oletame, et meie Laraveli andmebaasis on kamp kasutajaid. Igal keskööl peame saatma kõigile kasutajatele meili, kirjeldades meie uut sooduspakkumist. Seda tehes saavad meie kasutajad uute pakkumiste kohta teateid ja teie müük võib rohkem tähelepanu saada.
Eeldame, et olete kogu kasutajate teabe tabelisse "Kasutajad" salvestanud. Me saame sellest tabelist kasutaja e-kirjad ja saadame neile meilisõnumi. Muidugi peame kirjutama koodi viisil, mis peaks käima igal keskööl.
Avage app/Console/Kernel.php
fail oma redaktoris ja lisage faili kasutajamudel ja Maili fassaad.
<?php
namespace AppConsole;
use IlluminateConsoleSchedulingSchedule;
use IlluminateFoundationConsoleKernel as ConsoleKernel;
use AppUser; // User model
use Mail; // Mail Facade
class Kernel extends ConsoleKernel
{
....
Kernal
klassil on meetod, schedule
kus peame kirjutama ühe või mitu ajakava. Kuna peame kasutajatele meili saatma, kirjutame koodi järgmiselt.
<?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
}
....
Ülaltoodud koodis võtame kasutajad andmebaasist ja saadame neile meilisõnumi, kasutades Maili fassaadi saatmismeetodit. Siin peame looma mail.blade.php
kataloogi alla failid resources/views/emails
.
mail.blade.php
Hi <strong>{{ $name }}</strong>,
<p>{{ $body }}</p>
Kuna meie ülesanne on saata e-kiri keskööl, kasutasime seda daily()
meetodit. Laravel pakub erinevaid ajakava sageduse valikuid, mille leiate dokumentatsiooni lehelt.
Lisage Croni kirje oma serverisse
Lõpuks peaksite selle croni töö seadistamiseks serverisse lisama oma serverisse croni kirje.
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
Veenduge, et olete oma projekti tee õigesti määranud. See Cron kutsub iga minut Laraveli käsuplaani. See täidab automaatselt ajakava: käivitage käsk ja hinnake oma ajastatud ülesandeid ning käivitage tähtajalised ülesanded.
Loodame, et olete õppinud Laraveli croni ajakava kasutamise kohta ja oma ülesandeid automatiseerima. Tahaksime teie mõtteid kuulda allpool olevas kommentaaride jaotises.