laravel

Tutorial Penjadwal Laravel

Tutorial Penjadwal Laravel
Beberapa tugas diperlukan untuk dilakukan secara teratur dalam aplikasi apa pun, dan akan lebih efisien jika tugas tersebut dapat dilakukan secara otomatis. Kerangka kerja Laravel membuat jenis tugas ini lebih mudah dengan menggunakan Penjadwal Laravel. Mengirim email massal terkait penawaran, mengoptimalkan data, membuat laporan, menyimpan cadangan aplikasi, dan menghapus pengguna yang tidak aktif adalah beberapa contoh umum dari tugas berulang yang dapat dilakukan dengan Laravel Scheduler. Laravel dapat menjalankan tugas tertentu secara berkala dengan menggunakan pengelola tugas bawaan bernama Jagung pekerjaan. File konfigurasi bernama taburan jagung digunakan oleh Jagung untuk mengelola tugas penjadwalan. Tutorial ini menunjukkan cara mengelola tugas yang berulang dengan membuat Jagung pekerjaan dan melakukan penjadwalan tugas.

Prasyarat

Sebelum memulai tutorial ini, selesaikan dulu tugas-tugas berikut:

  1. Buat proyek Laravel baru
  2. Siapkan koneksi database
  3. Jalankan perintah migrasi buat tabel pengguna
  4. Siapkan konfigurasi untuk mengirim email (SMTP digunakan di sini untuk mengirim email.)

Terapkan Otentikasi Default

Pertama, terapkan sistem otentikasi pengguna default Laravel untuk menyelesaikan tugas penjadwalan yang ditunjukkan dalam tutorial ini. Jalankan perintah berikut dari terminal untuk mengimplementasikan otentikasi Laravel default menggunakan Vue.

$ komposer membutuhkan laravel/ui
$ php artisan ui vue -auth

Jalankan perintah berikut untuk mengkompilasi perancah baru untuk mendapatkan konten yang diperbarui.

$npm install && npm run dev

Jalankan perintah berikut untuk menghapus cache rute.

$ php artisan route: clear

Jalankan perintah berikut untuk memulai server pengembangan Laravel dan periksa apakah sistem otentikasi pengguna default berfungsi.

$ php artisan serve

Buka browser apa saja dan jalankan URL berikut di browser. jika Gabung dan daftar link muncul dan berfungsi dengan baik, maka implementasi otentikasi default telah selesai dengan baik.

http://localhost:8000

Buat Kelas Mailable dan Perintah Artisan

Banyak pengguna baru akan membuat akun setiap hari dan akan melakukan banyak tugas terkait dengan pengguna terdaftar saat proyek online. Terkadang, aplikasi perlu mengetahui berapa banyak pengguna yang membuat akun setiap hari. Jika informasi ini diperlukan secara teratur, maka lebih baik untuk mengeksekusi kueri tertentu setelah interval reguler. Perintah Laravel digunakan di sini untuk mendapatkan informasi dari pengguna yang saat ini terdaftar dan kelas yang dapat dikirim digunakan untuk mengirim informasi itu melalui email ke admin atau orang tertentu.

Jalankan perintah berikut untuk membuat kelas mailable untuk mengirim email. Ini akan membuat file bernama Kirim Daftar Pengguna.php di lokasi aplikasi/Mail.

$ php artisan make:mail SendUsersList

Buka file dan ubah kontennya, seperti pada kode berikut.

aplikasi namespace\Mail;
gunakan Illuminate\Bus\Queueable;
gunakan Illuminate\Contracts\Queue\ShouldQueue;
gunakan Illuminate\Mail\Mailable;
gunakan Illuminate\Queue\SerializesModels;
kelas SendUsersList memperluas Mailable

gunakan Queueable, SerializesModels;
/* Mendeklarasikan variabel array */
publik $userList= array();
/**
* Buat contoh pesan baru.
*
* @kembali batal
*/
fungsi publik __construct($userList)

/* Inisialisasi variabel array dengan variabel yang dilewatkan oleh
pembuatan objek kelas. */
$this->userList = $userList;

/**
* Bangun pesannya.
*
* @kembalikan $ini
*/
membangun fungsi publik ()

/* Diaplay file view dengan nilai-nilai variabel array */
return $this->view('registeredList')->with('userList',$this->userList);

Jalankan perintah berikut untuk membuat perintah Laravel khusus bernama Daftar Daftar Pengguna, yang akan menjalankan kueri untuk mendapatkan daftar informasi pengguna terdaftar di setiap hari. Perintah akan membuat file bernama Daftar Daftar Pengguna.php di lokasi aplikasi/Perintah.

$ php artisan make:command RegisterUsersList --command=registered:users

Buka file dan ubah konten dengan kode berikut untuk mengirim daftar pengguna terdaftar saat ini dari sistem saat ini ke alamat email tertentu.

namespace App\Console\Commands;
gunakan Illuminate\Console\Command;
/* Impor paket yang diperlukan */
menggunakan Surat;
gunakan App\Mail\SendUsersList;
menggunakan DB;
gunakan Karbon\Karbon;
gunakan App\Console\Commands\DateTime;
class RegisterUsersList memperluas Command

/**
* Nama dan tanda tangan dari perintah konsol.
*
* @var string
*/
/* Tambahkan nilai tanda tangan */
protected $signature = 'terdaftar:pengguna';
/**
* Deskripsi perintah konsol.
*
* @var string
*/
protected $description = 'Daftar pengguna terdaftar';
/**
* Buat contoh perintah baru.
*
* @kembali batal
*/
fungsi publik __construct()

induk::__construct();

/**
* Jalankan perintah konsol.
*
* @kembali ke
*/
pegangan fungsi publik()

/* Membaca tanggal sistem saat ini */
$hari ini =Karbon::sekarang()->toDateString();
/* Dapatkan daftar informasi pengguna yang terdaftar
pada tanggal sistem saat ini */
$current_registered_users =
DB::table('users')->whereDate('created_at', $today)->get()->toArray();
/* Buat objek dari kelas mailable dengan variabel array
yang berisi daftar pengguna yang terdaftar saat ini */
$email = new SendUsersList($current_registered_users);
/* Mengirim email menggunakan kelas Mail */
Mail::to('alamat email penerima')->send($email);

Atur Jadwal untuk Menjalankan Perintah

Buka Inti.php file dari lokasi aplikasi/Konsol dan ubah konten dengan kode berikut following. Anda dapat mengatur berbagai jenis opsi frekuensi jadwal. Anda bisa mendapatkan daftarnya dari tautan ini. Di sini, jadwal per jam digunakan.

namespace App\Console;
gunakan Illuminate\Console\Scheduling\Schedule;
gunakan Illuminate\Foundation\Console\Kernel sebagai ConsoleKernel;
kelas Kernel memperluas ConsoleKernel

/**
* Perintah Artisan disediakan oleh aplikasi Anda.
*
* @var array
*/
/* Inisialisasi variabel $commands */
dilindungi $perintah = [
'App\Console\Commands\RegisterUsersList',
];
/**
* Tentukan jadwal perintah aplikasi.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @kembali batal
*/
jadwal fungsi yang dilindungi(Jadwal $jadwal)

/* Mengatur jadwal setiap jam */
$schedule->command('registered:users')->hourly();

/**
* Daftarkan perintah untuk aplikasi.
*
* @kembali batal
*/
perintah fungsi yang dilindungi ()

$this->load(__DIR__.'/Perintah');
memerlukan base_path('rute/konsol.php');

Buat Tampilan

Buat terdaftarDaftar.Pedang.php lihat file dengan kode berikut.


@if (hitung($userList) > 0)

Daftar pengguna yang terdaftar hari ini diberikan di bawah ini:


@foreach($userList sebagai $user)
$pengguna->nama

@endforeach
@lain
Belum ada pengguna yang terdaftar hari ini.
@berakhir jika

Jalankan perintah:

Jalankan perintah berikut untuk menghapus cache.

$ php artisan cache: bersihkan
$ php artisan config: cache

Jalankan perintah artisan berikut dari terminal untuk menjalankan perintah khusus yang dibuat sebelumnya dan periksa hasilnya.

$ php artisan terdaftar: pengguna

Periksa alamat email penerima untuk mengetahui hasilnya. Output berikut akan muncul jika tidak ada pengguna yang dibuat.

Buat akun pengguna baru dan periksa email lagi.

Kesimpulan

Penjadwal Laravel membuat tugas berulang lebih mudah dilakukan untuk aplikasi. Setelah membaca tutorial ini, pembaca sekarang harus memiliki pemahaman yang jelas tentang konsep membuat perintah khusus dan mengimplementasikan tugas otomatis menggunakan Laravel Scheduler.

Ulasan Mouse Nirkabel Microsoft Sculpt Touch
Saya baru-baru ini membaca tentang Microsoft Sculpt Touch mouse nirkabel dan memutuskan untuk membelinya. Setelah menggunakannya untuk sementara waktu...
Trackpad dan Mouse Pointer di Layar AppyMouse untuk Tablet Windows
Pengguna tablet sering melewatkan penunjuk mouse, terutama ketika mereka terbiasa menggunakan laptop. Layar sentuh Smartphone dan tablet hadir dengan ...
Tombol tengah mouse tidak berfungsi di Windows 10
Itu tombol tengah mouse membantu Anda menelusuri halaman web dan layar yang panjang dengan banyak data. Jika itu berhenti, Anda akhirnya akan mengguna...