


Cara menggunakan perisian tengah untuk penjadualan tugas berjadual dalam Laravel
Cara 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
命令来生成任务调度器类的模板。运行以下命令以生成任务调度器类:
php artisan make:command MyTask --command=my:task
这将会在 app/Console/Commands
目录下生成一个名为 MyTask.php
的文件。在该文件中,我们可以定义任务调度器的逻辑。
示例代码:
namespace AppConsoleCommands; use IlluminateConsoleCommand; class MyTask extends Command { protected $signature = 'my:task'; protected $description = 'My custom task'; public function handle() { // 这里写入需要执行的任务逻辑 $this->info('Task executed!'); } }
在上述示例中,我们定义了一个名为 MyTask
的任务调度器类,用于执行我们的自定义任务。我们可以在 handle()
方法中编写需要执行的任务逻辑。在这个例子中,我们简单地输出一条信息。
- 注册任务调度器
接下来,我们需要注册任务调度器,使它可以被 Laravel 框架识别和调度。
在 app/Console/Kernel.php
文件中,我们可以看到定义了一个 schedule()
方法。我们可以在这个方法中注册我们的任务调度器。
示例代码:
namespace AppConsole; use IlluminateConsoleSchedulingSchedule; use IlluminateFoundationConsoleKernel as ConsoleKernel; class Kernel extends ConsoleKernel { // ... protected function schedule(Schedule $schedule) { $schedule->command('my:task') ->everyMinute(); } }
在上述示例中,我们调用 $schedule->command()
方法来注册我们的任务调度器。command()
方法接受一个参数,即我们之前定义的命令名称。使用 everyMinute()
方法,我们将任务调度器设置为每分钟运行一次。
- 创建中间件
现在,我们将创建中间件类,并在其中添加调度任务的逻辑。
我们可以使用 php artisan make:middleware
命令来生成中间件的模板:
php artisan make:middleware ScheduleMiddleware
这将会在 app/Http/Middleware
目录下生成一个名为 ScheduleMiddleware.php
的文件。在该文件中,我们可以添加任务调度的逻辑。
示例代码:
namespace appHttpMiddleware; use Closure; use IlluminateConsoleSchedulingSchedule; use IlluminateSupportFacadesArtisan; class ScheduleMiddleware { public function handle($request, Closure $next) { $schedule = new Schedule; // 在这里添加任务调度逻辑 $schedule->command('my:task')->everyMinute(); // 执行调度任务 $schedule->run(); return $next($request); } }
在上述示例中,我们创建了一个名为 ScheduleMiddleware
的中间件类。在 handle()
方法中,我们创建了一个 Schedule
实例,并使用 $schedule->command()
方法注册了我们的任务调度器。然后,我们调用 $schedule->run()
方法来执行任务调度。
- 注册中间件
最后,我们需要将中间件注册到 Laravel 的中间件堆栈中,以便在请求处理过程中自动调度任务。
在 app/Http/Kernel.php
文件中,我们可以看到一个名为 $middleware
的数组。我们可以在这里注册我们的中间件。
示例代码:
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)

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,

Checkphp> = 8.1, komposer, dan webserver; 2.cloneorcreateprojectandruncomposerinstall; 3.copy.env.exampleto.envandrunphpartimbeykey : menjana; 4.SetDataBaseSecredentientsin.envandrunphpartisanmigrate-Seed; 5.StartServerWithPhpartisanserve; 6.OptionallyRunnpmins

Buat Fail Seeder: Gunakan PhPartisanMake: SeederSerseeder untuk menghasilkan kelas Seeder, dan masukkan data melalui kilang model atau pertanyaan pangkalan data dalam kaedah RUN; 2. Panggil penyokong lain dalam DatabaseSeeder: Daftar Usereeder, Postseeder, dan lain-lain. Sehingga melalui $ this-> call () untuk memastikan kebergantungan adalah betul; 3. Jalankan Seeder: Jalankan PhPartisandb: Benih untuk menjalankan semua Seeders berdaftar, atau gunakan PhPartisanMigrate: segar-Seed untuk menetapkan semula dan mengisi semula data; 4

ChooseafeatureFlagstrategySuchasconfig-berasaskan, didorong oleh pangkalan data, orthird-partytoolslikeFlagsmith.2.setupadatabase-drivensystembycreatingamigrationforafeature_flagstableWithname, didayakan, andrulesfreate.3

Buat projek Laravel baru dan mulakan perkhidmatan; 2. Menjana model, penghijrahan dan pengawal dan jalankan penghijrahan; 3. Tentukan laluan RESTful dalam Laluan/API.PHP; 4. Melaksanakan kaedah tambahan, penghapusan, pengubahsuaian dan pertanyaan dalam postcontroller dan mengembalikan respons JSON; 5. Gunakan postman atau curl untuk menguji fungsi API; 6. Pilihan menambah pengesahan API melalui Sanctum; Akhirnya dapatkan struktur yang jelas, Laravelrestapi yang lengkap dan boleh diperpanjang, sesuai untuk aplikasi praktikal.

Eloquentorm adalah sistem pemetaan relasi objek terbina dalam Laravel. Ia mengendalikan pangkalan data melalui sintaks PHP dan bukannya SQL asli, menjadikan kod lebih ringkas dan mudah dikekalkan; 1. Setiap jadual data sepadan dengan kelas model, dan setiap rekod wujud sebagai contoh model; 2. Mengamalkan mod rekod aktif, dan contoh model boleh disimpan atau dikemas kini dengan sendirinya; 3. Penyerahan batch sokongan, dan atribut yang boleh diisi $ perlu ditakrifkan dalam model untuk memastikan keselamatan; 4. Memberi sokongan hubungan yang kuat, seperti satu-satu, satu-ke-banyak, banyak-banyak, dan lain-lain, dan anda boleh mengakses data yang berkaitan melalui panggilan kaedah; 5. Pembina pertanyaan bersepadu, di mana, Orderby dan kaedah lain boleh dipanggil dirantai untuk membina pertanyaan; 6. Aksesor sokongan dan pengubahsuaian, yang boleh memformat nombor apabila memperoleh atau menetapkan atribut.

Corak repositori adalah corak reka bentuk yang digunakan untuk memusnahkan logik perniagaan dari logik akses data. 1. Ia mentakrifkan kaedah akses data melalui antara muka (kontrak); 2. Operasi khusus dilaksanakan oleh kelas repositori; 3. Pengawal menggunakan antara muka melalui suntikan ketergantungan, dan tidak terus menghubungi sumber data; 4. Kelebihan termasuk kod kemas, kesesuaian yang kuat, penyelenggaraan mudah dan kerjasama pasukan; 5. Berkenaan dengan projek sederhana dan besar, projek kecil boleh menggunakan model secara langsung.

Eagerloadingpreventsthen 1queryprobylyloadingrelationshipsupfront.Then 1problemoccurswhen1queryfetchesrecords (cth., 100posts) danNadditionalqueriesFetchRelatedData (mis
