Web アプリケーションの継続的な開発では、アプリケーションの安定性と可用性を維持するために多数のタスクを処理する必要があります。キュー システムの使用は 1 つの解決策です。 ThinkPHP6 は、タスクを管理するための組み込みのキュー システムを提供します。ただし、多数のタスクを処理するには、より適切なキュー管理が必要です。これはスーパーバイザーを使用して実現できます。
この記事では、Supervisor を使用して ThinkPHP6 キューを管理する方法を紹介します。その前に、いくつかの基本概念を理解する必要があります。
- キュー システム
キュー システムは、タスクを直接処理するのではなくキューに追加することで、タスクを非同期に処理する方法です。タスクがキューに追加されると、Web アプリケーションの長期的なブロックを回避するために、そのタスクを別のワーカーに割り当てることができます。キュー システムは、タスクの一部の複雑な操作を完了することもできます。
- タスク
キュー システムでは、タスクは実行する必要がある作業です。非同期で実行する必要があるコードをタスクにパッケージ化し、そのタスクをキューに追加して後続の処理を待つことができます。 PHP フレームワークのキュー コンポーネントやサードパーティ ライブラリを使用して、Laravel のキュー コンポーネントや Beanstalkd などのタスクを管理できます。
- スーパーバイザー
スーパーバイザーは、キュー ワーカーを含む 1 つ以上のプロセスを監視および制御できるプロセス制御システムです。スーパーバイザは、キュー システムをより安定して耐久性のあるものにすることができます。スーパーバイザーを使用すると、タスクが失敗したときにワーカーを自動的に再起動でき、Web アプリケーションの再起動後もキューのタスクを確実に処理し続けることができます。
これらの基本概念を理解した後、Supervisor を使用して ThinkPHP6 キューを管理する方法を紹介します。
ステップ 1: スーパーバイザーのインストール
キュー管理にスーパーバイザーを使用するには、まずスーパーバイザーをインストールする必要があります。 Ubuntu システムでは、次のコマンドを使用してインストールできます。
1 | sudo apt-get install supervisor
|
ログイン後にコピー
CentOS システムでは、次のコマンドを使用してインストールできます。
1 | sudo yum install supervisor
|
ログイン後にコピー
インストールが完了したら、次のコマンドを使用してスーパーバイザを起動します。
1 | sudo systemctl start supervisor
|
ログイン後にコピー
同時に、管理するために、構成ファイル /etc/supervisor/conf.d/
に新しい構成ファイルを作成する必要もあります。キューワーカー。このディレクトリには、laravel-worker.conf
などの任意の名前のファイルを作成できます。次に、このファイルを編集する方法について説明します。
ステップ 2: スーパーバイザー構成ファイルを編集する
スーパーバイザー構成ファイルを編集し、ワーカーをスーパーバイザー監視リストに追加します。次のコマンドを使用して、作成した構成ファイルを編集できます:
1 | sudo nano /etc/supervisor/conf.d/laravel-worker.conf
|
ログイン後にコピー
次の構成をファイルに追加します:
1 2 3 4 5 6 7 8 9 10 | [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 #修改为你的日志文件位置
|
ログイン後にコピー
上記の構成をファイルに追加した後、次のコマンドを実行して、スーパーバイザ構成ファイルをリロードします。
1 2 | sudo supervisorctl reread
sudo supervisorctl update
|
ログイン後にコピー
これにより、スーパーバイザがキュー ワーカーを開始して管理できるようになります。次のコマンドを使用して、スーパーバイザーによって開始されたすべてのプロセスを表示できます。
1 | sudo supervisorctl status
|
ログイン後にコピー
ステップ 3: キュー タスクをテストする
これで、スーパーバイザーを使用してキュー ワーカーが正常に開始されました。次に、キュー タスクをテストする必要があります。まず、アプリケーションでキューが構成されていることを確認してください。
テスト タスクをどこかに追加し、キューが動作し始めるようにします。たとえば、電子メール送信タスクを作成します:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?php
namespace appqueue;
use thinkqueueJob;
class SendEmail
{
public $user ;
public function __construct( $user )
{
$this ->user = $user ;
}
public function fire(Job $job , $data )
{
if (Math.random() < 0.5) {
$job ->release(5);
} else {
$job -> delete ();
}
}
}
|
ログイン後にコピー
コントローラーにメソッドを追加し、タスクを追加します:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?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 サイトの他の関連記事を参照してください。