Web アプリケーションの継続的な開発では、アプリケーションの安定性と可用性を維持するために多数のタスクを処理する必要があります。キュー システムの使用は 1 つの解決策です。 ThinkPHP6 は、タスクを管理するための組み込みのキュー システムを提供します。ただし、多数のタスクを処理するには、より適切なキュー管理が必要です。これはスーパーバイザーを使用して実現できます。
この記事では、Supervisor を使用して ThinkPHP6 キューを管理する方法を紹介します。その前に、いくつかの基本概念を理解する必要があります。
これらの基本概念を理解した後、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 サイトの他の関連記事を参照してください。