ホームページ  >  記事  >  PHPフレームワーク  >  Supervisor を使用して ThinkPHP6 キューを管理するにはどうすればよいですか?

Supervisor を使用して ThinkPHP6 キューを管理するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-06-12 08:51:091458ブラウズ

Web アプリケーションの継続的な開発では、アプリケーションの安定性と可用性を維持するために多数のタスクを処理する必要があります。キュー システムの使用は 1 つの解決策です。 ThinkPHP6 は、タスクを管理するための組み込みのキュー システムを提供します。ただし、多数のタスクを処理するには、より適切なキュー管理が必要です。これはスーパーバイザーを使用して実現できます。

この記事では、Supervisor を使用して ThinkPHP6 キューを管理する方法を紹介します。その前に、いくつかの基本概念を理解する必要があります。

  1. キュー システム
    キュー システムは、タスクを直接処理するのではなくキューに追加することで、タスクを非同期に処理する方法です。タスクがキューに追加されると、Web アプリケーションの長期的なブロックを回避するために、そのタスクを別のワーカーに割り当てることができます。キュー システムは、タスクの一部の複雑な操作を完了することもできます。
  2. タスク
    キュー システムでは、タスクは実行する必要がある作業です。非同期で実行する必要があるコードをタスクにパッケージ化し、そのタスクをキューに追加して後続の処理を待つことができます。 PHP フレームワークのキュー コンポーネントやサードパーティ ライブラリを使用して、Laravel のキュー コンポーネントや Beanstalkd などのタスクを管理できます。
  3. スーパーバイザー
    スーパーバイザーは、キュー ワーカーを含む 1 つ以上のプロセスを監視および制御できるプロセス制御システムです。スーパーバイザは、キュー システムをより安定して耐久性のあるものにすることができます。スーパーバイザーを使用すると、タスクが失敗したときにワーカーを自動的に再起動でき、Web アプリケーションの再起動後もキューのタスクを確実に処理し続けることができます。

これらの基本概念を理解した後、Supervisor を使用して ThinkPHP6 キューを管理する方法を紹介します。

ステップ 1: スーパーバイザーのインストール

キュー管理にスーパーバイザーを使用するには、まずスーパーバイザーをインストールする必要があります。 Ubuntu システムでは、次のコマンドを使用してインストールできます。

sudo apt-get install supervisor

CentOS システムでは、次のコマンドを使用してインストールできます。

sudo yum install supervisor

インストールが完了したら、次のコマンドを使用してスーパーバイザを起動します。

sudo systemctl start supervisor

同時に、管理するために、構成ファイル /etc/supervisor/conf.d/ に新しい構成ファイルを作成する必要もあります。キューワーカー。このディレクトリには、laravel-worker.conf などの任意の名前のファイルを作成できます。次に、このファイルを編集する方法について説明します。

ステップ 2: スーパーバイザー構成ファイルを編集する

スーパーバイザー構成ファイルを編集し、ワーカーをスーパーバイザー監視リストに追加します。次のコマンドを使用して、作成した構成ファイルを編集できます:

sudo nano /etc/supervisor/conf.d/laravel-worker.conf

次の構成をファイルに追加します:

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
directory=/var/www/laravel #修改为你的项目目录
command=php /var/www/laravel/artisan queue:work
autostart=true
autorestart=true
user=www-data #修改为你的Web服务器运行用户
numprocs=8 #工作者数量,此处建议设置为CPU核心数2-4倍
redirect_stderr=true
stdout_logfile=/var/www/laravel/storage/logs/worker.log #修改为你的日志文件位置

上記の構成をファイルに追加した後、次のコマンドを実行して、スーパーバイザ構成ファイルをリロードします。

sudo supervisorctl reread
sudo supervisorctl update

これにより、スーパーバイザがキュー ワーカーを開始して管理できるようになります。次のコマンドを使用して、スーパーバイザーによって開始されたすべてのプロセスを表示できます。

sudo supervisorctl status

ステップ 3: キュー タスクをテストする

これで、スーパーバイザーを使用してキュー ワーカーが正常に開始されました。次に、キュー タスクをテストする必要があります。まず、アプリケーションでキューが構成されていることを確認してください。

テスト タスクをどこかに追加し、キューが動作し始めるようにします。たとえば、電子メール送信タスクを作成します:

<?php

namespace appqueue;

use thinkqueueJob;

class SendEmail
{
    public $user;

    public function __construct($user)
    {
        $this->user = $user;
    }

    public function fire(Job $job, $data)
    {
        //发送Email的代码
        if (Math.random() < 0.5) {
            // 处理失败
            $job->release(5);// 5秒后重试
        } else {
            // 成功处理
            $job->delete();
        }
    }
}

コントローラーにメソッドを追加し、タスクを追加します:

<?php

namespace appcontroller;

use thinkController;
use thinkqueueQueue;

class Email extends Controller
{
    public function index()
    {
        $user = ['email' => 'test@test.com', 'name' => 'test'];
        $job = new ppqueueSendEmail($user);
        app('queue')->push($job);
    }
}

このようにして、Supervisor を使用して ThinkPHP6 キューを管理できます。 。キュー システムについて詳しく知りたい場合は、公式ドキュメントを読むことができます。この記事が Web アプリケーションを正常に実行するのに役立つことを願っています。

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

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