Rumah > rangka kerja php > Laravel > Menggunakan Laravel untuk penjadualan tugas dan pemprosesan baris gilir: mencapai pengurusan tugas yang cekap

Menggunakan Laravel untuk penjadualan tugas dan pemprosesan baris gilir: mencapai pengurusan tugas yang cekap

PHPz
Lepaskan: 2023-08-26 22:07:45
asal
1611 orang telah melayarinya

Menggunakan Laravel untuk penjadualan tugas dan pemprosesan baris gilir: mencapai pengurusan tugas yang cekap

Menggunakan Laravel untuk penjadualan tugas dan pemprosesan baris gilir: mencapai pengurusan tugas yang cekap

Pengenalan:
Dalam proses membangunkan aplikasi web, kami sering menghadapi keperluan untuk mengendalikan beberapa tugas yang memakan masa, seperti menghantar e-mel dan menjana laporan tunggu. Jika tugasan ini diproses terus dalam kitaran permintaan, masa tindak balas akan menjadi terlalu lama, sekali gus menjejaskan pengalaman pengguna. Untuk menyelesaikan masalah ini, kami boleh menggunakan penjadualan tugas dan teknologi pemprosesan baris gilir untuk memproses tugasan ini secara tidak segerak di latar belakang untuk meningkatkan prestasi sistem dan kelajuan tindak balas. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Laravel untuk penjadualan tugas dan pemprosesan baris gilir untuk mencapai pengurusan tugas yang cekap.

1. Penjadualan Tugasan
Penjadualan tugas merujuk kepada melaksanakan tugas tertentu secara automatik pada selang masa tertentu atau titik masa tertentu. Laravel menyediakan penjadual tugas yang berkuasa yang boleh mentakrifkan dan mengurus tugas yang dijadualkan dengan mudah.

  1. Buat tugasan
    Kita perlu mencipta kelas tugasan, yang diwarisi daripada kelas Tugasan Laravel. Dalam kelas tugasan, kita boleh menentukan logik tugasan yang perlu dilaksanakan.

Kod contoh adalah seperti berikut:

namespace AppTasks;

use IlluminateConsoleSchedulingSchedule;
use IlluminateFoundationConsoleKernel as ConsoleKernel;

class MyTask extends ConsoleKernel
{
    protected function schedule(Schedule $schedule)
    {
        // 定义任务调度逻辑
        $schedule->command('task:run')->daily();
    }
}
Salin selepas log masuk
  1. Daftar Tugasan
    Seterusnya, kita perlu mendaftarkan tugasan dalam rangka kerja Laravel. Buka fail console/kernel.php projek Laravel dan tambah konfigurasi penjadualan arahan tugasan dalam fail.

Kod sampel adalah seperti berikut:

protected $commands = [
    'AppConsoleCommandsMyTask',
];
Salin selepas log masuk
  1. Mengkonfigurasi penjadualan tugas
    Dalam rangka kerja Laravel, konfigurasi penjadualan tugas diletakkan dalam fail app/Console/Kernel.php. Buka fail dan tentukan logik penjadualan tugas dalam kaedah jadual.

Kod sampel adalah seperti berikut:

protected function schedule(Schedule $schedule)
{
    // 每分钟执行一次任务
    $schedule->command('task:run')->everyMinute();
    
    // 每天凌晨执行一次任务
    $schedule->command('task:sendEmail')->daily();
}
Salin selepas log masuk
  1. Jalankan penjadualan tugas
    Setelah melengkapkan konfigurasi penjadualan tugas, kita boleh memulakan penjadualan tugas dengan melaksanakan arahan berikut:
php artisan schedule:run
Salin selepas log masuk
pemprosesan bermaksud pemprosesan beratur

2. tugasan yang perlu diproses Tugasan dimasukkan ke dalam baris gilir dan kemudian diproses oleh perkhidmatan baris gilir mengikut turutan atas dasar masuk dahulu, keluar dahulu. Rangka kerja Laravel mempunyai perkhidmatan baris gilir terbina dalam yang boleh melaksanakan pemprosesan tugasan tak segerak dengan mudah.

    Mengkonfigurasi perkhidmatan baris gilir
  1. Perkhidmatan baris gilir Laravel disimpan berdasarkan Redis atau pangkalan data Kami perlu mengkonfigurasi maklumat konfigurasi sambungan baris gilir terlebih dahulu.
Kod contoh adalah seperti berikut:

QUEUE_CONNECTION=redis

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
Salin selepas log masuk

    Buat jadual giliran
  1. Kemudian, kita perlu mencipta jadual giliran untuk menyimpan tugasan yang akan diproses.
Kod sampel adalah seperti berikut:

php artisan queue:table

php artisan migrate
Salin selepas log masuk

    Tentukan tugasan
  1. Seterusnya, kita perlu mentakrifkan kelas tugas untuk melaksanakan logik tugasan tertentu.
Kod contoh adalah seperti berikut:

namespace AppJobs;

use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateFoundationBusDispatchable;
use IlluminateQueueInteractsWithQueue;
use IlluminateQueueSerializesModels;

class MyJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        // 执行具体的任务逻辑
    }
}
Salin selepas log masuk

    Terbitkan tugasan ke baris gilir
  1. Di mana tugasan perlu diproses, kami boleh menerbitkan tugasan ke baris gilir melalui kod berikut. .
Kod sampel adalah seperti berikut:

dispatch(new MyJob());
Salin selepas log masuk
Ringkasan:
    Melalui langkah di atas, kita boleh menggunakan rangka kerja Laravel untuk penjadualan tugas dan pemprosesan baris gilir untuk mencapai pengurusan tugas yang cekap. Penjadualan tugas membolehkan kami melaksanakan tugasan pada masa tertentu, manakala pemprosesan baris gilir boleh meletakkan tugasan yang memakan masa ke dalam baris gilir dan memprosesnya secara tidak segerak untuk mengelakkan permintaan menyekat untuk masa yang lama. Ciri-ciri ini membolehkan aplikasi web kami mengendalikan pelbagai tugas dengan lebih cekap dan stabil.

  1. Rujukan:

Laravel Documentation: https://laravel.com/docs

Laravel Queues: https://laravel.com/docs/queues

Atas ialah kandungan terperinci Menggunakan Laravel untuk penjadualan tugas dan pemprosesan baris gilir: mencapai pengurusan tugas yang cekap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan