目次
Laravel キューとは何ですか?
Laravel キューの使用
ステップ 1: キュー ドライバーを構成する
ステップ 2: キュー タスク クラスを作成する
ステップ 3: タスクをキューにプッシュする
ステップ 4 :キュータスクの実行
スーパーバイザーを使用して非同期タスクを管理する
ステップ 1: スーパーバイザーをインストールする
ステップ 2: スーパーバイザー構成ファイルを作成する
ステップ 3: スーパーバイザのリロード
ステップ 4: スーパーバイザのログを表示する
結論
ホームページ PHPフレームワーク Laravel Laravel 開発: Laravel キューとスーパーバイザーを使用して非同期タスクを管理するにはどうすればよいですか?

Laravel 開発: Laravel キューとスーパーバイザーを使用して非同期タスクを管理するにはどうすればよいですか?

Jun 13, 2023 pm 04:04 PM
supervisor 非同期タスク laravel queues

Laravel 開発: Laravel キューとスーパーバイザーを使用して非同期タスクを管理する方法は?

最新の Web アプリケーションでは、非同期タスクが日常業務に不可欠な部分になっています。非同期タスクにより、アプリケーションの応答時間が短縮され、ユーザー エクスペリエンスが最適化され、アプリケーションのスケーラビリティが向上します。 Laravel Queues は、非同期タスクとメッセージ キューを処理するために Laravel フレームワークによって提供される強力なツールです。この記事では、Laravel キューの概念と使用法を紹介し、それを Supervisor と組み合わせて非同期タスクを管理します。

Laravel キューとは何ですか?

Laravel Queues は、非同期タスクとメッセージ キューを処理するためのメソッドです。 Laravel キューを使用すると、Web リクエストの応答時間に影響を与えることなく、時間のかかるタスクをキューに入れることができます。たとえば、電子メールの送信、ビデオの処理、PDF の生成などはすべて時間のかかる操作ですが、キューを使用してこれらの操作をバックグラウンド処理に置くことで、アプリケーションの効率と応答性を高めることができます。

Laravel Queues は、いくつかの組み込みキュードライバーを通じて、データベース、Redis、Beanstalkd、Amazon SQS などの複数のバックエンドテクノロジーをサポートします。これにより、開発者は好みのキューイング テクノロジを使用して非同期タスクを処理できるようになります。

Laravel キューの使用

以下では、Laravel キューを使用して非同期タスクを処理する方法を段階的に紹介します。

ステップ 1: キュー ドライバーを構成する

Laravel 構成ファイルには、キューとキュー ドライバーの構成に使用できる queue.php という名前のファイルがあります。次のコマンドを使用して queue.php ファイルを生成できます:

php artisan queue:table
php artisan queue:failed-table
php artisan migrate
ログイン後にコピー

これにより、移行ファイルとキュー テーブルが生成されます。移行コマンドを実行して移行を実行します。

queue.php ファイルでは、さまざまなキュー ドライバーの使用を選択できます。

  • データベース ドライバー - タスクをデータベースに保存します。エントリーレベルのキューイング システムとして。
  • Redis ドライバー - Redis の組み込みキュー サポートを使用します。
  • Beanstalkd ドライバー - Beanstalkd メッセージ キュー サービスを使用します。
  • Amazon SQS ドライバー - Amazon Simple Queue Service (SQS) を使用します。

たとえば、Redis キュー ドライバーを使用する場合は、queue.php ファイルを次のように構成してください:

'default' => env('QUEUE_CONNECTION', 'redis'),
'connections' => [
    'redis' => [
        'driver' => 'redis',
        'connection' => 'default',
        'queue' => env('REDIS_QUEUE', 'default'),
        'retry_after' => 90,
        'block_for' => null,
    ],
]
ログイン後にコピー

ステップ 2: キュー タスク クラスを作成する

次に、非同期タスクを処理するキュー タスク クラスを作成する必要があります。このクラスは、タスクのロジックを定義する単純な PHP クラスである必要があります。たとえば、次のコードは電子メールを送信するための非同期タスク クラスです。

class SendEmail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $email;
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($email)
    {
        $this->email = $email;
    }
    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        Mail::to($this->email)->send(new WelcomeEmail());
    }
}
ログイン後にコピー

このクラスは、ShouldQueue インターフェイスを実装します。このクラスは、このクラスを非同期タスク クラスに変換するように Laravel に指示するために必要です。 handle() メソッドはタスクの特定のロジックを定義するため、非同期で処理する必要があるタスクをここで実行できます。

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

キュー タスクとキュー ドライバーの準備ができたので、次のステップはタスクをキューに入れることです。次のコードを使用して、プロジェクト内の任意の場所で Eloquent キューを呼び出します:

use AppJobsSendEmail; 
use IlluminateSupportFacadesQueue;
...
Queue::push(new SendEmail('example@test.com'));
ログイン後にコピー

または、以下に示すように、dispatch() メソッドを使用してタスクをキューに入れることもできます:

SendEmail::dispatch('example@test.com');
ログイン後にコピー

ステップ 4 :キュータスクの実行

タスクをキューに入れると、タスクはキューにディスパッチされ、実行を待ちます。次のコードを使用してキューを実行できます。

php artisan queue:work
ログイン後にコピー

このコマンドを実行すると、リスナーが開始され、キュー内のタスクが処理されます。

スーパーバイザーを使用して非同期タスクを管理する

キュー タスクはバックグラウンドで実行する必要があるため、タスクが継続的に実行できるようにサーバー上にプロセス デーモンをセットアップする必要があります。スーパーバイザは、バックグラウンド プロセスが異常終了しないことを保証し、必要に応じて再起動する、一般的に使用されるプロセス デーモンです。

ステップ 1: スーパーバイザーをインストールする

Ubuntu システムでは、次のコマンドを使用してスーパーバイザーをインストールできます:

sudo apt-get update
sudo apt-get install supervisor
ログイン後にコピー

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

/etc/supervisor/conf.d ディレクトリに構成ファイル (myqueue.conf など) を作成します。

nano /etc/supervisor/conf.d/myqueue.conf
ログイン後にコピー

次の内容を構成ファイルに追加し、必ずパス、コマンド、ユーザー名を変更してください。使用しているプログラムに合わせてください:

[program:myqueue]
process_name=%(program_name)s_%(process_num)02d
command=/usr/bin/php /path/to/artisan queue:work --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=username
numprocs=1
redirect_stderr=true
stdout_logfile=/path/to/storage/logs/myqueue.log
ログイン後にコピー

ステップ 3: スーパーバイザのリロード

スーパーバイザの設定ファイルを変更した後、設定ファイルをリロードするようにスーパーバイザに通知する必要があります。次のコマンドを使用してスーパーバイザをリロードします。

sudo supervisorctl reread

sudo supervisorctl update

sudo supervisorctl start all
ログイン後にコピー

ステップ 4: スーパーバイザのログを表示する

スーパーバイザのログ ファイルで、非同期タスクの出力とエラー情報を表示できます。たとえば、構成ファイルで指定されたパスとログ ファイル名を表示することで、スーパーバイザーのログを表示できます。

tail -f /path/to/storage/logs/myqueue.log
ログイン後にコピー

結論

この記事では、Laravel キューとスーパーバイザーを使用して非同期を管理する方法を紹介します。 Laravel キューを使用すると、時間のかかるタスクを簡単にキューに入れることができ、アプリケーションの効率と応答性が向上します。スーパーバイザを使用すると、バックグラウンド タスクが継続的に実行され、必要に応じて自動的に再起動できるようになります。この記事があなたの成長に役立つことを願っています。

以上がLaravel 開発: Laravel キューとスーパーバイザーを使用して非同期タスクを管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravel 開発: Laravel Queue を使用して非同期タスクを処理する方法は? Laravel 開発: Laravel Queue を使用して非同期タスクを処理する方法は? Jun 13, 2023 pm 08:32 PM

アプリケーションが複雑になるにつれて、大量のデータとプロセスの処理と管理が課題になります。この状況に対処するために、Laravel はユーザーに Laravel Queue (キュー) という非常に強力なツールを提供します。これにより、開発者は、ユーザー インターフェイスに影響を与えることなく、電子メールの送信、PDF の生成、画像のトリミングの処理などのタスクをバックグラウンドで実行できます。この記事では、Laravel キューの使用方法について詳しく説明します。 LaravelQueueキューとは

FastAPI での非同期タスク処理にメッセージ キューを使用する方法 FastAPI での非同期タスク処理にメッセージ キューを使用する方法 Jul 30, 2023 pm 09:21 PM

FastAPI での非同期タスク処理にメッセージ キューを使用する方法 はじめに: Web アプリケーションでは、電子メールの送信やレポートの生成など、時間のかかるタスクを処理する必要があることがよくあります。これらのタスクが同期の要求と応答のプロセスに配置されると、ユーザーは長時間待機する必要があり、ユーザー エクスペリエンスとサーバーの応答速度が低下します。この問題を解決するには、非同期タスク処理にメッセージ キューを使用します。この記事では、メッセージ キューを使用して FastAPI フレームワークで非同期タスクを処理する方法を紹介します。

開発に関する提案: ThinkPHP フレームワークを使用して非同期タスクを実装する方法 開発に関する提案: ThinkPHP フレームワークを使用して非同期タスクを実装する方法 Nov 22, 2023 pm 12:01 PM

「開発に関する提案: ThinkPHP フレームワークを使用して非同期タスクを実装する方法」 インターネット技術の急速な発展に伴い、Web アプリケーションには、多数の同時リクエストと複雑なビジネス ロジックを処理するための要件が​​ますます高まっています。システムのパフォーマンスとユーザー エクスペリエンスを向上させるために、開発者は多くの場合、電子メールの送信、ファイルのアップロードの処理、レポートの生成など、時間のかかる操作を実行するために非同期タスクの使用を検討します。 PHP の分野では、人気のある開発フレームワークとして ThinkPHP フレームワークが、非同期タスクを実装するための便利な方法をいくつか提供しています。

Supervisor を使用して ThinkPHP6 キューを管理するにはどうすればよいですか? Supervisor を使用して ThinkPHP6 キューを管理するにはどうすればよいですか? Jun 12, 2023 am 08:51 AM

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

非同期タスクを使用して PHP でバックグラウンド処理を実装する方法 非同期タスクを使用して PHP でバックグラウンド処理を実装する方法 Jun 27, 2023 pm 03:10 PM

Web 開発では、データ処理、ファイルのアップロード、電子メールの送信など、完了するまでに長い時間がかかるタスクがあります。これらの操作がフォアグラウンドで実行されると、ユーザー エクスペリエンスが低下し、ページが長時間応答しなくなることもあります。したがって、非同期タスクを使用すると、これらのタスクをバックグラウンドに置くことができ、システムの同時実行機能が向上し、ユーザー エクスペリエンスとフォアグラウンド インタラクションがよりスムーズになります。人気のあるサーバーサイドスクリプト言語として、PHP は非同期タスクの実装を適切にサポートしています。この記事では、PHP で異質性を使用する方法を紹介します。

PHP8.0のプロセス管理ライブラリ:Supervisor PHP8.0のプロセス管理ライブラリ:Supervisor May 14, 2023 am 08:28 AM

PHP 言語の継続的な開発により、開発者ツールボックスにはますます多くの関数やライブラリが導入されていますが、重要な機能の 1 つはプロセス管理です。 PHP8.0 バージョンの Supervisor は非常に強力なプロセス管理ライブラリであり、プロセスを簡単に開始、停止、監視、再起動し、プロセスの安定した動作を維持するのに役立ちます。スーパーバイザーとは何ですか? Supervisor は、Python で書かれたプロセス管理ツールで、簡単に開始、停止、監視することができます。

Laravel 開発: Laravel ジョブ キューを使用して非同期タスクを実装する方法は? Laravel 開発: Laravel ジョブ キューを使用して非同期タスクを実装する方法は? Jun 13, 2023 pm 07:12 PM

Laravel 開発: LaravelJobQueues を使用して非同期タスクを実装する方法? Web アプリケーション開発では、多くの場合、時間のかかる、即時ではない応答タスクを実行する必要があります。これらのタスクはサーバー リソースを占有し、他のユーザーのリクエストをブロックすることもあり、ユーザー エクスペリエンスに大きな影響を与えます。 LaravelJobQueues は、これらの時間のかかるタスクを非同期タスクに変換し、キューを使用して処理できるソリューションを提供します。この記事ではLaraveについて紹介します

ThinkPHP6 を使用して非同期タスクを実装する ThinkPHP6 を使用して非同期タスクを実装する Jun 20, 2023 pm 01:14 PM

近年、インターネット サービスの継続的な開発に伴い、メッセージ キュー、イベント モニタリング、スケジュールされたタスクなど、さまざまな非同期タスクが Web 開発の重要な部分になっています。非同期タスクテクノロジーを使用すると、Web サイトのパフォーマンスが大幅に向上し、サーバーの負荷が軽減され、ユーザーの待ち時間が短縮され、ユーザー エクスペリエンスが向上します。この記事では、ThinkPHP6 を使用して非同期タスクを実装する方法を紹介します。 1. 非同期タスクの概要 非同期タスクとは、プロセス内で特定のタスクが順番に実行されず、別の処理単位に引き継がれることを意味します。

See all articles