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.
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(); } }
Kod sampel adalah seperti berikut:
protected $commands = [ 'AppConsoleCommandsMyTask', ];
Kod sampel adalah seperti berikut:
protected function schedule(Schedule $schedule) { // 每分钟执行一次任务 $schedule->command('task:run')->everyMinute(); // 每天凌晨执行一次任务 $schedule->command('task:sendEmail')->daily(); }
php artisan schedule:run
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.
QUEUE_CONNECTION=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379
php artisan queue:table php artisan migrate
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() { // 执行具体的任务逻辑 } }
dispatch(new MyJob());
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!