


Barisan Laravel dan Penjadual Tugas: Memproses Sebilangan Besar Tugasan Secara serentak
Laravel Queue dan Penjadual Tugas: Memproses Sebilangan Besar Tugas Secara serentak
Dalam pembangunan aplikasi web moden, selalunya terdapat senario di mana sejumlah besar tugas perlu diproses. Contohnya, menghantar e-mel, menjana laporan, memproses data besar, dsb. Tetapi apabila jumlah tugasan adalah sangat besar, satu permintaan untuk memproses tugasan ini boleh menyebabkan permintaan itu ditangguhkan untuk masa yang lama atau sumber sistem kehabisan. Untuk menyelesaikan masalah ini, Laravel menyediakan baris gilir dan fungsi penjadual tugas, yang boleh memproses sejumlah besar tugas secara serentak.
1. Laravel Queue
Queue ialah mekanisme yang menolak tugasan ke latar belakang untuk pemprosesan tak segerak Melalui baris gilir, aplikasi kami boleh memproses operasi yang memakan masa di latar belakang tanpa menjejaskan kelajuan tindak balas permintaan pengguna.
Dalam Laravel, kita boleh menggunakan pelbagai kaedah untuk melaksanakan fungsi baris gilir, seperti baris gilir pangkalan data, gilir Redis, gilir Beanstalkd, dll. Di sini, kami mengambil baris gilir pangkalan data sebagai contoh untuk menunjukkan cara melaksanakan fungsi tugas pemprosesan serentak.
- Mengkonfigurasi pemacu gilir
Mula-mula, kita perlu mengkonfigurasi pemacu gilir dalam fail konfigurasi Laravel config/queue.php
. Kami memilih untuk menggunakan baris gilir pangkalan data, tetapkan pilihan sambungan
kepada pangkalan data
dan tetapkan beberapa konfigurasi berkaitan sambungan pangkalan data. config/queue.php
中配置队列驱动。我们选择使用数据库队列,将connection
选项设置为database
,以及设置一些数据库连接的相关配置。
'default' => env('QUEUE_CONNECTION', 'database'), 'connections' => [ 'database' => [ 'driver' => 'database', 'table' => 'jobs', 'queue' => 'default', 'retry_after' => 90, ], ],
2.创建队列表
接下来,我们需要创建一个用于存储队列任务的数据表。可以使用Laravel提供的Artisan命令php artisan queue:table
快速生成迁移文件,并执行迁移。
php artisan queue:table php artisan migrate
- 创建任务类
然后,我们需要创建一个任务类,用于处理具体的任务逻辑。在Laravel中,任务类一般放在app/Jobs
目录下,可以通过Artisan命令php artisan make:job
快速生成一个任务类。
php artisan make:job SendEmail
生成的任务类SendEmail
位于app/Jobs
目录下,我们可以在该类的handle
方法中编写任务逻辑。
<?php namespace AppJobs; use IlluminateBusQueueable; use IlluminateContractsQueueShouldQueue; use IlluminateFoundationBusDispatchable; use IlluminateQueueInteractsWithQueue; use IlluminateQueueSerializesModels; class SendEmail implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; /** * Execute the job. * * @return void */ public function handle() { // 处理发送邮件的逻辑 // ... } }
在任务类中,我们需要实现ShouldQueue
接口,并定义handle
方法来处理任务逻辑。
- 推送任务到队列
最后,我们可以通过以下代码将任务推送到队列中。
use AppJobsSendEmail; SendEmail::dispatch();
通过dispatch
方法将任务加入到队列中,系统会自动根据配置选择相应的队列驱动进行处理。
二、Laravel任务调度器
Laravel还提供了一个任务调度器的功能,可以将任务设置为定时执行或者周期性执行。我们可以通过任意的Laravel自带的时间表(Laravel Time Scheduling)来设置任务的执行规则。
- 定义任务调度
首先,我们需要在app/Console/Kernel.php
文件的schedule
方法中定义任务调度。例如,我们定义一个每分钟执行一次的任务。
protected function schedule(Schedule $schedule) { $schedule->job(new SendEmail)->everyMinute(); }
在上述代码中,我们使用了任务类SendEmail
作为调度的执行体,然后通过everyMinute
方法设置任务执行频率为每分钟一次。
- 初始化任务调度
任务调度定义成功之后,我们需要在服务器上设置一个Cron表达式以便执行任务调度。
在Linux系统上,可以通过crontab
命令来编辑和设置Cron表达式。
crontab -e
然后,在打开的文件中加入以下代码:
* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1
上述代码表示每分钟执行一次php artisan schedule:run
rrreee
php artisan queue:table
yang disediakan oleh Laravel untuk menjana fail migrasi dan melakukan migrasi dengan cepat. rrreee
- Buat kelas tugas
Kemudian, kita perlu mencipta kelas tugas untuk mengendalikan logik tugasan tertentu. Dalam Laravel, kelas tugas biasanya diletakkan dalam direktori app/Jobs
Anda boleh menjana kelas tugasan dengan cepat melalui perintah Artisan php artisan make:job
.
SendEmail
terletak dalam direktori app/Jobs
Kita boleh menulis logik tugasan dalam kaedah handle
kelas ini . 🎜rrreee🎜Dalam kelas tugasan, kita perlu melaksanakan antara muka ShouldQueue
dan mentakrifkan kaedah handle
untuk mengendalikan logik tugasan. 🎜- 🎜Tolak tugas ke baris gilir🎜🎜🎜Akhir sekali, kita boleh menolak tugasan ke baris gilir melalui kod berikut. 🎜rrreee🎜Tambahkan tugas pada baris gilir melalui kaedah
jadual
fail app/Console/Kernel.php
. Sebagai contoh, kami mentakrifkan tugas yang dilaksanakan setiap minit. 🎜rrreee🎜Dalam kod di atas, kami menggunakan kelas tugas SendEmail
sebagai badan pelaksanaan jadual, dan kemudian menetapkan kekerapan pelaksanaan tugas kepada sekali seminit melalui everyMinute
kaedah. 🎜- 🎜Mulakan penjadualan tugas🎜🎜🎜Selepas penjadualan tugas berjaya ditakrifkan, kita perlu menetapkan ungkapan Cron pada pelayan untuk melaksanakan penjadualan tugas. 🎜🎜Pada sistem Linux, anda boleh mengedit dan menetapkan ungkapan Cron melalui perintah
crontab
. 🎜rrreee🎜Kemudian, tambahkan kod berikut pada fail yang dibuka: 🎜rrreee🎜Kod di atas bermaksud arahan php artisan schedule:run
akan dilaksanakan setiap minit, yang akan mencetuskan penjadualan tugas. 🎜🎜Melalui konfigurasi di atas, kita boleh merealisasikan fungsi pelaksanaan berjadual dan pelaksanaan tugas secara berkala. 🎜🎜Ringkasan: 🎜🎜Melalui fungsi baris gilir Laravel dan penjadual tugas, kita boleh dengan mudah menyedari keperluan untuk memproses sejumlah besar tugas secara serentak. Barisan gilir boleh menolak tugas ke latar belakang untuk pemprosesan tak segerak untuk mengelakkan permintaan pengguna disekat. Penjadual tugas membolehkan tugasan kami dilaksanakan secara tetap atau berkala mengikut peraturan masa, meningkatkan kecekapan pemprosesan tugas. 🎜🎜Di atas adalah pengenalan kepada baris gilir dan penjadual tugas Laravel, saya harap ia akan membantu semua orang! 🎜Atas ialah kandungan terperinci Barisan Laravel dan Penjadual Tugas: Memproses Sebilangan Besar Tugasan Secara serentak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Artikel ini membimbing membina API Restful Laravel yang mantap. Ia meliputi persediaan projek, pengurusan sumber, interaksi pangkalan data, siri, pengesahan, kebenaran, ujian, dan amalan terbaik keselamatan penting. Menangani Chall Scalability

Butiran artikel ini melaksanakan pengesahan dan kebenaran OAuth 2.0 di Laravel. Ia meliputi menggunakan pakej seperti penyelesaian liga/oauth2-server atau penyedia khusus, menekankan persediaan pangkalan data, pendaftaran klien, konfigurasi pelayan kebenaran

Artikel ini membincangkan membuat dan menyesuaikan elemen UI yang boleh diguna semula di Laravel menggunakan komponen, menawarkan amalan terbaik untuk organisasi dan mencadangkan peningkatan pakej.

Artikel ini membincangkan amalan terbaik untuk menggunakan Laravel dalam persekitaran awan-asli, yang memberi tumpuan kepada skalabiliti, kebolehpercayaan, dan keselamatan. Isu -isu utama termasuk kontena, mikroservis, reka bentuk tanpa kewarganegaraan, dan strategi pengoptimuman.

Artikel ini membincangkan membuat dan menggunakan arahan pisau tersuai di Laravel untuk meningkatkan templat. Ia meliputi arahan yang menentukan, menggunakannya dalam templat, dan menguruskannya dalam projek besar, menonjolkan manfaat seperti kebolehgunaan semula kod yang lebih baik dan r yang lebih baik dan r

Artikel ini membincangkan membuat dan menggunakan peraturan pengesahan tersuai di Laravel, menawarkan langkah -langkah untuk menentukan dan melaksanakannya. Ia menyoroti faedah seperti kebolehgunaan semula dan kekhususan, dan menyediakan kaedah untuk memperluaskan sistem pengesahan Laravel.

Artikel ini meneroka strategi muat naik fail optimum dan penyimpanan awan di Laravel. Ia mengkaji penyimpanan storan tempatan berbanding pembekal awan (AWS S3, Google Cloud, Azure, DigitalOcean), menekankan keselamatan (pengesahan, sanitisasi, HTTPS) dan Opti Prestasi

Konsol Artisan Laravel mengautomasikan tugas -tugas seperti menghasilkan kod, menjalankan migrasi, dan penjadualan. Perintah utama termasuk membuat: pengawal, berhijrah, dan db: benih. Perintah tersuai boleh dibuat untuk keperluan khusus, meningkatkan kecekapan aliran kerja.Character
