ホームページ >PHPフレームワーク >ThinkPHP >メールキューの処理に ThinkPHP6 を使用するにはどうすればよいですか?

メールキューの処理に ThinkPHP6 を使用するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-06-12 13:11:30974ブラウズ

Web アプリケーションの増加に伴い、電子メールを送信する需要も増加しています。場合によっては、パフォーマンスを向上させるために、メッセージをバッチで送信するか、処理のためにメッセージをキューに送信する必要があります。 ThinkPHP 6 には便利なメール送信機能やキュー処理機能が備わっており、この記事では ThinkPHP 6 を使用してメールキュー処理を行う方法を紹介します。

1. キュー サービスのインストールと構成

1. Redis のインストール

Redis は、データベース、キャッシュ、メッセージとして使用されるオープン ソースのインメモリ データ構造ストレージ サーバーです。ブローカ。キュー データは永続化する必要があるため、Redis を介して保存する必要があります。 Redis をインストールするには、公式ドキュメントやその他のオンライン チュートリアルを参照してください。

2. キュー接続の設定

ThinkPHP 設定ファイル config/queue.php でキュー接続を設定します。例は次のとおりです:

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'
    ],
];

このうちデフォルトはデフォルトのキュードライバーであり、ここでは redis として構成されています。 Redis ドライバーの関連パラメーターは、接続名、接続ドライバー、接続されたキュー名などを含む接続で構成されます。 queue_class は、タスクを実行するクラスの名前空間を監視するために使用されます。

3. キュー リスナーの起動

コマンドラインでキュー リスナーを起動すると、キュー内のタスクを 1 つずつ取り出して実行できます。例は次のとおりです:

php think queue:listen

2. キューを使用して電子メールを送信します

1. 電子メール送信タスクを作成します

アプリ/ジョブに電子メール送信タスク クラスを作成しますディレクトリに移動し、関連するロジックを書き込みます。たとえば、電子メール送信用のタスク クラス SnedMailJob:

<?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. タスクをキューに追加する

電子メールを送信する必要がある場合は、次のコードを使用してタスクをキューに追加します。

use thinkacadeQueue;

// 添加一条SendMailJob任务到队列中
Queue::push(new SendMailJob($to, $subject, $content));

このうち、$to、$subject、$content は、電子メールの受信者、件名、および内容です。

3. キューリスナーがタスクを実行します

キューリスナーを起動すると、タスクがキューから自動的に取り出して実行されます。実行が成功すると、タスクは自動的にキューから削除されます。実行が失敗すると、タスクが正常に実行されるか、最大試行回数 (.env ファイルで構成可能) に達するまで、キュー リスナーはタスクをキューに再度プッシュします。

3. 結論

この記事では、キュー サービスのインストールと構成、メール送信タスクの作成、キューへのタスクの追加とキュー リスナーの実行など、メール キューの処理に ThinkPHP6 を使用する方法を紹介します。タスク。メール キューを使用すると、アプリケーションからメール タスクを分離でき、パフォーマンスと信頼性が向上します。

以上がメールキューの処理に ThinkPHP6 を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。