Dengan peningkatan aplikasi web, permintaan untuk menghantar e-mel juga meningkat. Dalam sesetengah kes, anda perlu menghantar mesej secara berkelompok atau menghantarnya ke baris gilir untuk diproses bagi meningkatkan prestasi. ThinkPHP 6 menyediakan fungsi penghantaran e-mel dan pemprosesan baris gilir yang mudah Artikel ini akan memperkenalkan cara menggunakan ThinkPHP 6 untuk pemprosesan baris gilir e-mel.
1. Pasang dan konfigurasikan perkhidmatan baris gilir
1 Pasang Redis
Redis ialah pelayan storan struktur data dalam memori yang digunakan sebagai pangkalan data, cache dan mesej. broker. Oleh kerana data baris gilir mesti berterusan, data baris gilir perlu disimpan melalui Redis. Untuk memasang Redis, anda boleh merujuk kepada dokumentasi rasmi dan tutorial dalam talian yang lain.
2. Konfigurasikan sambungan baris gilir
Konfigurasi sambungan baris gilir dalam fail konfigurasi ThinkPHP config/queue.php Contohnya adalah seperti berikut:
return [ // 默认驱动 'default' => env('queue.driver', 'redis'), // 队列连接参数 'connections' => [ 'sync' => [ 'driver' => 'sync', ], 'redis' => [ 'driver' => 'redis', 'connection' => 'default', 'queue' => env('queue.redis.queue', 'default'), 'retry_after' => 90, 'block_for' => null, ], ], // 监听的任务类命名空间 'queue_class' => [ // 'AppJobs' ], ];
Antaranya, lalai ialah pemacu gilir lalai , dikonfigurasikan di sini sebagai redis. Parameter yang berkaitan bagi pemacu redis dikonfigurasikan dalam sambungan, termasuk nama sambungan, pemacu sambungan, nama baris gilir yang disambungkan, dsb. queue_class digunakan untuk memantau ruang nama kelas yang menjalankan tugas.
3 Mulakan pendengar baris gilir
Mulakan pendengar baris gilir dalam baris arahan, dan anda boleh mengeluarkan dan melaksanakan tugas dalam baris gilir satu demi satu. Contohnya adalah seperti berikut:
php think queue:listen
2. Gunakan baris gilir untuk menghantar e-mel
1 Buat tugas menghantar e-mel
Buat kelas tugas menghantar e-mel dalam apl/kerja. direktori dan tulis logik yang berkaitan. Contohnya, kelas tugasan SnedMailJob untuk menghantar e-mel:
<?php namespace appjob; use appcommonMail; use thinkqueueJob; class SendMailJob { /** * Send the email message. * * @param Job $job * @param array $data email message data */ public function fire(Job $job, $data) { try { // 发送邮件 Mail::send($data['to'], $data['subject'], $data['content']); // 执行任务成功,删除任务 $job->delete(); } catch (Exception $e) { // 执行任务失败,重新放入任务队列中 // 系统会自动新建一个可重试任务并放入队列,该任务结束后重新尝试执行当前任务 $job->release(); // 或者 $job->failed(); } } }
2. Tambahkan tugasan pada baris gilir
Di mana anda perlu menghantar e-mel, tambahkan tugasan pada baris gilir melalui kod berikut:
use thinkacadeQueue; // 添加一条SendMailJob任务到队列中 Queue::push(new SendMailJob($to, $subject, $content));
Antaranya, $to, $subject dan $content ialah penerima, subjek dan kandungan e-mel.
3. Pendengar baris gilir melaksanakan tugas
Selepas memulakan pendengar baris gilir, tugasan akan dikeluarkan secara automatik daripada baris gilir dan dilaksanakan. Selepas pelaksanaan berjaya, tugasan akan dipadamkan daripada baris gilir dengan sendirinya. Selepas pelaksanaan gagal, pendengar baris gilir akan menolak tugasan ke dalam baris gilir sekali lagi sehingga tugasan itu berjaya dilaksanakan atau bilangan maksimum percubaan dicapai (boleh dikonfigurasikan dalam fail .env).
3. Kesimpulan
Artikel ini memperkenalkan kaedah penggunaan ThinkPHP6 untuk pemprosesan baris gilir mel, termasuk memasang dan mengkonfigurasi perkhidmatan baris gilir, mencipta tugas menghantar mel, menambah tugas pada baris gilir dan pelaksanaan pendengar giliran tugasan. Dengan menggunakan baris gilir mel, anda boleh memisahkan tugas mel daripada aplikasi anda, meningkatkan prestasi dan kebolehpercayaan.
Atas ialah kandungan terperinci Bagaimana untuk menggunakan ThinkPHP6 untuk pemprosesan baris gilir mel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!