


Cara menggunakan perisian tengah untuk penjadualan tugas berjadual dalam Laravel
Nov 02, 2023 pm 02:26 PMCara menggunakan middleware untuk penjadualan tugas berjadual dalam Laravel
Pengenalan:
Laravel ialah rangka kerja sumber terbuka PHP popular yang menyediakan alatan yang mudah dan berkuasa untuk membangunkan aplikasi web. Salah satu ciri penting ialah penjadualan tugas bermasa, yang membolehkan pembangun menjalankan tugas tertentu pada selang waktu tertentu. Dalam artikel ini, kami akan memperkenalkan cara menggunakan perisian tengah untuk melaksanakan penjadualan tugas berjadual Laravel dan menyediakan contoh kod khusus.
- Persediaan alam sekitar
Sebelum kita mula, kita perlu memastikan persekitaran berikut sedia: - PHP 7.x atau ke atas
- Komposer
- Laravel dipasang dengan jayanya
- Cipta tugasan untuk membuat jadual kelas Penjadual tugasan digunakan untuk menentukan tugasan yang ingin kita jalankan pada masa tertentu. Dalam Laravel, anda boleh menggunakan perintah
php artisan make:command
untuk menjana templat bagi kelas penjadual tugas.
php artisan make:command
命令來生成任務(wù)調(diào)度器類的模板。運行以下命令以生成任務(wù)調(diào)度器類:
php artisan make:command MyTask --command=my:task
這將會在 app/Console/Commands
目錄下生成一個名為 MyTask.php
的文件。在該文件中,我們可以定義任務(wù)調(diào)度器的邏輯。
示例代碼:
namespace AppConsoleCommands; use IlluminateConsoleCommand; class MyTask extends Command { protected $signature = 'my:task'; protected $description = 'My custom task'; public function handle() { // 這里寫入需要執(zhí)行的任務(wù)邏輯 $this->info('Task executed!'); } }
在上述示例中,我們定義了一個名為 MyTask
的任務(wù)調(diào)度器類,用于執(zhí)行我們的自定義任務(wù)。我們可以在 handle()
方法中編寫需要執(zhí)行的任務(wù)邏輯。在這個例子中,我們簡單地輸出一條信息。
- 注冊任務(wù)調(diào)度器
接下來,我們需要注冊任務(wù)調(diào)度器,使它可以被 Laravel 框架識別和調(diào)度。
在 app/Console/Kernel.php
文件中,我們可以看到定義了一個 schedule()
方法。我們可以在這個方法中注冊我們的任務(wù)調(diào)度器。
示例代碼:
namespace AppConsole; use IlluminateConsoleSchedulingSchedule; use IlluminateFoundationConsoleKernel as ConsoleKernel; class Kernel extends ConsoleKernel { // ... protected function schedule(Schedule $schedule) { $schedule->command('my:task') ->everyMinute(); } }
在上述示例中,我們調(diào)用 $schedule->command()
方法來注冊我們的任務(wù)調(diào)度器。command()
方法接受一個參數(shù),即我們之前定義的命令名稱。使用 everyMinute()
方法,我們將任務(wù)調(diào)度器設(shè)置為每分鐘運行一次。
- 創(chuàng)建中間件
現(xiàn)在,我們將創(chuàng)建中間件類,并在其中添加調(diào)度任務(wù)的邏輯。
我們可以使用 php artisan make:middleware
命令來生成中間件的模板:
php artisan make:middleware ScheduleMiddleware
這將會在 app/Http/Middleware
目錄下生成一個名為 ScheduleMiddleware.php
的文件。在該文件中,我們可以添加任務(wù)調(diào)度的邏輯。
示例代碼:
namespace appHttpMiddleware; use Closure; use IlluminateConsoleSchedulingSchedule; use IlluminateSupportFacadesArtisan; class ScheduleMiddleware { public function handle($request, Closure $next) { $schedule = new Schedule; // 在這里添加任務(wù)調(diào)度邏輯 $schedule->command('my:task')->everyMinute(); // 執(zhí)行調(diào)度任務(wù) $schedule->run(); return $next($request); } }
在上述示例中,我們創(chuàng)建了一個名為 ScheduleMiddleware
的中間件類。在 handle()
方法中,我們創(chuàng)建了一個 Schedule
實例,并使用 $schedule->command()
方法注冊了我們的任務(wù)調(diào)度器。然后,我們調(diào)用 $schedule->run()
方法來執(zhí)行任務(wù)調(diào)度。
- 注冊中間件
最后,我們需要將中間件注冊到 Laravel 的中間件堆棧中,以便在請求處理過程中自動調(diào)度任務(wù)。
在 app/Http/Kernel.php
文件中,我們可以看到一個名為 $middleware
的數(shù)組。我們可以在這里注冊我們的中間件。
示例代碼:
namespace AppHttp; use IlluminateFoundationHttpKernel as HttpKernel; class Kernel extends HttpKernel { // ... protected $middleware = [ // ... AppHttpMiddlewareScheduleMiddleware::class, ]; // ... }
在上述示例中,我們將 ScheduleMiddleware
添加到 $middleware
Jalankan arahan berikut untuk menjana kelas penjadual tugas:
Ini akan menjana fail bernama MyTask.php
dalam direktori app/Console/Commands
> fail. Dalam fail ini kita boleh menentukan logik penjadual tugas.
rrreee
Dalam contoh di atas, kami menentukan kelas penjadual tugas bernamaMyTask
untuk melaksanakan tugas tersuai kami. Kita boleh menulis logik tugasan yang perlu dilaksanakan dalam kaedah handle()
. Dalam contoh ini, kami hanya mengeluarkan mesej. ??- ??Daftar penjadual tugas??Seterusnya, kita perlu mendaftar penjadual tugas supaya ia boleh dikenali dan dijadualkan oleh rangka kerja Laravel. ??
app/Console/Kernel.php
, kita dapat melihat bahawa kaedah schedule()
ditakrifkan. Kami boleh mendaftarkan penjadual tugas kami dalam kaedah ini. ????Contoh kod: ??rrreee??Dalam contoh di atas, kami memanggil kaedah $schedule->command()
untuk mendaftarkan penjadual tugas kami. Kaedah command()
menerima satu parameter, iaitu nama perintah yang kami takrifkan sebelum ini. Menggunakan kaedah everyMinute()
, kami menetapkan penjadual tugas untuk dijalankan setiap minit. ??- ??Buat middleware??Kini, kami akan mencipta kelas middleware dan menambah logik penjadualan tugas di dalamnya. ??
php artisan make:middleware
untuk menjana templat middleware: ??rrreee??Ini akan berada dalam direktori app/Http/Middleware
Hasilkan fail bernama ScheduleMiddleware.php
. Dalam fail ini, kita boleh menambah logik penjadualan tugas. ????Contoh kod: ??rrreee??Dalam contoh di atas, kami mencipta kelas middleware yang dipanggil ScheduleMiddleware
. Dalam kaedah handle()
, kami mencipta contoh Schedule
dan mendaftarkan kami menggunakan kaedah $schedule->command()
Penjadual tugas. Kemudian, kami memanggil kaedah $schedule->run()
untuk melaksanakan penjadualan tugas. ??- ??Daftarkan middleware??Akhir sekali, kita perlu mendaftarkan middleware ke dalam tindanan middleware Laravel supaya tugasan boleh dijadualkan secara automatik semasa pemprosesan permintaan. ??
app/Http/Kernel.php
, kita boleh melihat tatasusunan bernama $middleware
. Kami boleh mendaftarkan middleware kami di sini. ????Contoh kod: ??rrreee??Dalam contoh di atas, kami menambahkan ScheduleMiddleware
pada tatasusunan $middleware
untuk menjadualkan tugas secara automatik semasa pemprosesan permintaan. ????Ringkasan: ??Dalam artikel ini, kami mempelajari cara menggunakan perisian tengah untuk melaksanakan penjadualan tugas berjadual Laravel. Kami mentakrifkan logik tugas dengan mencipta kelas penjadual tugas dan mendaftarkannya dengan penjadual tugas Laravel. Kemudian, kami mencipta kelas middleware dan menambah logik penjadualan tugas kepadanya. Akhir sekali, kami mendaftarkan middleware ke dalam timbunan middleware Laravel. Dengan cara ini, kita boleh melaksanakan tugas berjadual dengan mudah dalam Laravel. ????Saya harap artikel ini telah membantu anda memahami dan menggunakan penjadualan tugas berjadual dalam Laravel. ??Atas ialah kandungan terperinci Cara menggunakan perisian tengah untuk penjadualan tugas berjadual dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

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

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

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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)

Terdapat tiga cara utama untuk menetapkan pembolehubah persekitaran dalam PHP: 1. Konfigurasi global melalui php.ini; 2. Melalui pelayan web (seperti setenv Apache atau fastcgi_param of nginx); 3. Gunakan fungsi Putenv () dalam skrip PHP. Antaranya, php.ini sesuai untuk konfigurasi global dan jarang mengubah konfigurasi, konfigurasi pelayan web sesuai untuk senario yang perlu diasingkan, dan putenv () sesuai untuk pembolehubah sementara. Dasar kegigihan termasuk fail konfigurasi (seperti php.ini atau konfigurasi pelayan web), fail .Env dimuatkan dengan perpustakaan dotenv, dan suntikan dinamik pembolehubah dalam proses CI/CD. Maklumat sensitif pengurusan keselamatan harus dielakkan dengan keras, dan disyorkan untuk digunakan.

Cache konfigurasi Laravel meningkatkan prestasi dengan menggabungkan semua fail konfigurasi ke dalam fail cache tunggal. Mengaktifkan cache konfigurasi dalam persekitaran pengeluaran dapat mengurangkan operasi I/O dan penguraian fail pada setiap permintaan, dengan itu mempercepat pemuatan konfigurasi; 1. Ia harus diaktifkan apabila permohonan itu digunakan, konfigurasi stabil dan tiada perubahan yang kerap diperlukan; 2. Selepas membolehkan, ubah suai konfigurasi, anda perlu menjalankan semula phpartisanconfig: cache untuk berkuat kuasa; 3. Elakkan menggunakan logik dinamik atau penutupan yang bergantung kepada keadaan runtime dalam fail konfigurasi; 4. Apabila masalah penyelesaian masalah, anda harus terlebih dahulu membersihkan cache, periksa pembolehubah .Env dan cache semula.

Untuk membolehkan bekas PHP menyokong pembinaan automatik, terasnya terletak pada mengkonfigurasi proses integrasi berterusan (CI). 1. Gunakan Dockerfile untuk menentukan persekitaran PHP, termasuk imej asas, pemasangan lanjutan, pengurusan ketergantungan dan tetapan kebenaran; 2. Konfigurasi alat CI/CD seperti Gitlabci, dan tentukan peringkat binaan, ujian dan penempatan melalui fail .gitlab-ci.yml untuk mencapai pembinaan, pengujian dan penggunaan automatik; 3. Mengintegrasikan kerangka ujian seperti PHPUnit untuk memastikan ujian secara automatik dijalankan selepas perubahan kod; 4. Gunakan strategi penempatan automatik seperti Kubernet untuk menentukan konfigurasi penempatan melalui fail penyebaran.yaml; 5. Mengoptimumkan Dockerfile dan mengamalkan pembinaan pelbagai peringkat

Pengurusan kebenaran pengguna adalah mekanisme teras untuk merealisasikan pengewangan produk dalam pembangunan PHP. Ia memisahkan pengguna, peranan dan keizinan melalui model kawalan akses berasaskan peranan (RBAC) untuk mencapai peruntukan dan pengurusan kebenaran yang fleksibel. Langkah -langkah khusus termasuk: 1. 2. Melaksanakan kaedah pemeriksaan kebenaran dalam kod seperti $ user-> can ('edit_post'); 3. Gunakan cache untuk meningkatkan prestasi; 4. Gunakan kawalan kebenaran untuk merealisasikan fungsi produk dan perkhidmatan yang dibezakan, dengan itu menyokong sistem keahlian dan strategi harga; 5. Elakkan kebenaran butiran terlalu kasar atau terlalu halus, dan gunakan "pelaburan"

Eloquentscopes Laravel adalah alat yang merangkumi logik pertanyaan biasa, dibahagikan kepada skop tempatan dan skop global. 1. Skop tempatan ditakrifkan dengan kaedah yang bermula dengan skop dan perlu dipanggil secara eksplisit, seperti pos :: diterbitkan (); 2. Skop global secara automatik digunakan untuk semua pertanyaan, sering digunakan untuk pemadaman lembut atau sistem multi-penyewa, dan antara muka skop perlu dilaksanakan dan didaftarkan dalam model; 3. Skop boleh dilengkapi dengan parameter, seperti penapisan artikel mengikut tahun atau bulan, dan parameter yang sepadan diluluskan ketika memanggil; 4. Perhatikan spesifikasi penamaan, panggilan rantai, pelepasan sementara dan pengembangan gabungan apabila menggunakan untuk meningkatkan kejelasan kod dan kebolehgunaan semula.

Createahelpers.phpfileinapp/welterswithcustomfunctionsLikeFormatprice, isactiveroute, andisadmin.2.addthefiletothe "files" Sectionofcomposer.jsonunderautoload.3.RuncomposerdumpoMakions

Pilih kaedah pembalakan: Pada peringkat awal, anda boleh menggunakan ralat terbina dalam () untuk php. Selepas projek diperluaskan, pastikan anda beralih ke perpustakaan yang matang seperti monolog, menyokong pelbagai pengendali dan tahap log, dan pastikan log mengandungi cap waktu, tahap, nombor talian fail dan butiran ralat; 2. Struktur Penyimpanan Reka Bentuk: Sebilangan kecil balak boleh disimpan dalam fail, dan jika terdapat sebilangan besar log, pilih pangkalan data jika terdapat sejumlah besar analisis. Gunakan MySQL/PostgreSQL ke data berstruktur. Elasticsearch Kibana disyorkan untuk separa berstruktur/tidak berstruktur. Pada masa yang sama, ia dirumuskan untuk sandaran dan strategi pembersihan tetap; 3. Antara muka Pembangunan dan Analisis: Ia sepatutnya mempunyai fungsi carian, penapisan, pengagregatan, dan visualisasi. Ia boleh diintegrasikan secara langsung ke Kibana, atau menggunakan Perpustakaan Carta Kerangka PHP untuk membangunkan pembangunan diri, yang memberi tumpuan kepada kesederhanaan dan kemudahan antara muka.

Buat jadual rujukan untuk merekodkan hubungan cadangan, termasuk rujukan, rujukan, kod cadangan dan masa penggunaan; 2. Tentukan hubungan dan hubungan hasmany dalam model pengguna untuk menguruskan data cadangan; 3. Menjana kod cadangan yang unik semasa mendaftar (boleh dilaksanakan melalui peristiwa model); 4. Menangkap kod cadangan dengan menanyakan parameter semasa pendaftaran, mewujudkan hubungan cadangan selepas pengesahan dan mencegah penyimpanan diri; 5. mencetuskan mekanisme ganjaran apabila pengguna yang disyorkan melengkapkan tingkah laku yang ditentukan (urutan langganan); 6. Menjana pautan cadangan yang boleh dikongsi, dan gunakan URL tandatangan Laravel untuk meningkatkan keselamatan; 7. Statistik cadangan paparan di papan pemuka, seperti jumlah cadangan dan nombor yang ditukar; Adalah perlu untuk memastikan kekangan pangkalan data, sesi atau kuki berterusan,
