ホームページ PHPフレームワーク Laravel Laravelキューを常に実行する方法

Laravelキューを常に実行する方法

May 21, 2023 am 09:45 AM

Laravel を使用した開発では、多くの場合、キューが重要な部分になります。アプリケーションの同時処理能力が大幅に向上し、多数のタスクを効果的に管理および処理できるようになります。しかし、実際の開発では、キューが不安定だったり、タスクが多いとキューが突然止まってしまったり、タスクで例外が発生してもキューが自動的に再起動できなかったりといった問題に遭遇することがよくあります。現時点では、キューを安定して実行できるようにするためのスキルが必要です。これらの問題を解決するのに役立ついくつかの方法を次に示します。

1. スーパーバイザー デーモン プロセス

スーパーバイザーは、Python で書かれたプロセス制御システムです。Linux サーバー上のプロセスを管理するための一般的なツールです。バックグラウンドで実行し続けるのに役立ちます。モニタープロセスが何らかの理由で終了した場合、ホスト プロセスで再起動できます。これにより、キューを常に実行できるようになります。

スーパーバイザーのインストール

Centos システムの実行

yum install -y スーパーバイザー

Ubuntu システムの実行

apt-get install -y スーパーバイザー

設定ファイルを開きます

vim /etc/supervisord.conf

laravel-queue 設定セクションを追加します

[program:laravel-queue]
command=php /path/to/artisan queue:work redis --sleep=3 --tries=3
directory=/path/to/your/project
autostart=true
autorestart=true
user=www-data

説明:

  • プログラム: プロセスの名前を定義します
  • コマンド: 実行中のコマンドを定義します
  • autostart: ブート時に自動開始
  • autorestart: 自動再起動
  • user: プロセスを実行しているユーザー

変更を保存して構成をロード

supervisorctl reload

キューの開始

supervisorctl start laravel-queue

この方法で、キューのデーモンプロセスを実装できます。キューが停止した場合、プロセスは自動的に再起動され、キューが常に実行されるようになります。もちろん、構成ファイル内の構成を通じて複数のワークプロセスを実行して、キュー処理機能を向上させることもできます。

2. Hashicorp の Nomad を使用してマラソンを統合する

Hashicorp の Nomad は、Marathon と同様に動作し、どちらも分散タスク オーケストレーション用のオープン ソース ツールです。 Nomad は、場所と決定を抽象化することで、さまざまな種類のタスクのセットを調整できます。 Marathon と比較して、Nomad には軽量、高いユーザー エクスペリエンス、簡単な設定という利点があります。

Nomad を使用するには docker 環境が必要です。docker をインストールしていない場合は、最初に apt-get を通じてインストールできます:

apt-get install -y docker.io

  1. ノマド ジョブの作成

プロジェクト ルート ディレクトリに job.nomad ファイルを作成し、設定を通じてノマド ジョブを作成します:

job "laravel_app" {
datacenters = ["dc1" ]
type = "service"

group "app" {

task "laravel-queue" {
  driver = "docker"

  config {
    image = "your_docker_image"
    command = ["php", "artisan", "queue:work", "--tries", "1", "--timeout", "30"]
    args = [
      "--queue=critical,high,default,email,chat,sms",
      "--sleep=3"
    ]
    ports = ["http"]
  }

  resources {
    cpu    = 500
    memory = 128
    network {
      mbits = 10
      port "http" {}
    }
  }

  service {
    name = "laravel-queue"
    port = "http"
    check {
      type     = "http"
      path     = "/status"
      interval = "10s"
      timeout  = "2s"
    }
  }

  restart {
    attempts = 10
    interval = "5m"
    delay    = "25s"
    mode     = "failures"
  }
}
ログイン後にコピー

}
}

上記の設定ファイルは docker を使用しますスタンドアロンモードで実行し、本番環境の実際の状況に応じて変更します。

  1. Nomad ジョブの開始

次のコマンドを実行して Nomad ジョブを開始します:

nomad run job.nomad

これで完了です。キューの開始。 Nomad はノード上でジョブを実行し、同時にジョブを監視できます。タスクに問題が発生した場合、Nomad はすぐにタスクを再起動してステータスを更新できます。 Nomad Job はクラスター内の異なるノード間を自動的に移行できるため、特定のノードの負荷が軽減され、アプリケーション全体の堅牢性が向上します。

3. AWS SQS の使用

AWS の SQS (Simple Queue Service) は、分散アプリケーション間でメッセージを効率的に配信および処理できるメッセージ キューのサービスであり、メッセージ処理の水平スケーリングを可能にします。アプリケーション間の機能。 Laravel フレームワークでは、SQS をアプリケーションに簡単に統合でき、SQS をサポートする Laravel Queue パッケージをインストールするだけで済みます。一方、AWS SQS では各キューには最小ライフサイクル (TTL) があり、この期間内に正常に実行されなかった場合、タスクは SQS によって削除されます。これにより、タスクが最終的に正常に実行されることが保証されます。

SQS のインストール

SQS を Laravel に統合するのは比較的簡単で、SQS をサポートする Laravel Queue パッケージをインストールするだけです。 Composer を通じて直接インストールできます:

composer require "aws/aws-sdk-php ^3.0"

Configure SQS

次のコンテンツを .env 設定に追加します。 file:

QUEUE_DRIVER=sqs
AWS_ACCESS_KEY_ID=your_aws_access_key
AWS_SECRET_ACCESS_KEY=your_aws_secret_key
AWS_DEFAULT_REGION=us-west-2
SQS_PREFIX=your_queue_prefix

your_aws_access_key、your_aws_secret_key を置き換えますそしてあなたの_queue_prefixは私自身のものです。

Start queue

phpArtisan queue:work sqs --queue=default --tries=3 --sleep=3 --timeout=60

上記のコマンドは、 start SQS キューで、デフォルトのデフォルト キューを使用します。 --tries パラメータはキュー タスクのエラー試行回数を示し、--sleep はキューがタスクを処理した後の休止時間を示し、--timeout は自動キュータスクがタイムアウトしたときの再試行時間。キューは継続的にループしてタスクを取得し、実行します。

エラーが発生すると、キュー タスクのエラー試行回数がなくなるか実行が成功するまで、キューは自動的に再試行します。

要約

この記事では、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で高度な機能を備えたRESTFUL APIを構築する方法は? Laravelで高度な機能を備えたRESTFUL APIを構築する方法は? Mar 11, 2025 pm 04:13 PM

この記事では、堅牢なLaravel Restful APIの構築をガイドします。 プロジェクトのセットアップ、リソース管理、データベースインタラクション、シリアル化、認証、承認、テスト、および重要なセキュリティベストプラクティスをカバーしています。 スケーラビリティチャレに対処します

LaravelでOAUTH2認証と承認を実装する方法は? LaravelでOAUTH2認証と承認を実装する方法は? Mar 12, 2025 pm 05:56 PM

この記事では、LaravelでOAUTH 2.0認証と承認を実装しています。 League/OAuth2-Serverやプロバイダー固有のソリューションなどのパッケージを使用して、データベースのセットアップ、クライアント登録、承認サーバー構成を強調しています

Laravelのコンポーネントを使用して再利用可能なUI要素を作成するにはどうすればよいですか? Laravelのコンポーネントを使用して再利用可能なUI要素を作成するにはどうすればよいですか? Mar 17, 2025 pm 02:47 PM

この記事では、コンポーネントを使用してLaravelで再利用可能なUI要素の作成とカスタマイズについて説明し、組織のベストプラクティスを提供し、パッケージを強化することを提案します。

クラウドネイティブ環境でLaravelを使用するためのベストプラクティスは何ですか? クラウドネイティブ環境でLaravelを使用するためのベストプラクティスは何ですか? Mar 14, 2025 pm 01:44 PM

この記事では、スケーラビリティ、信頼性、セキュリティに焦点を当てたクラウドネイティブ環境でLaravelを展開するためのベストプラクティスについて説明します。重要な問題には、コンテナ化、マイクロサービス、ステートレス設計、最適化戦略が含まれます。

Laravelでカスタム検証ルールを作成して使用するにはどうすればよいですか? Laravelでカスタム検証ルールを作成して使用するにはどうすればよいですか? Mar 17, 2025 pm 02:38 PM

この記事では、Laravelでカスタム検証ルールの作成と使用について説明し、それらを定義および実装する手順を提供します。再利用性や特異性などの利点を強調し、Laravelの検証システムを拡張する方法を提供します。

Laravel vs. Symfony:Webアプリに適したものはどれですか? Laravel vs. Symfony:Webアプリに適したものはどれですか? Mar 10, 2025 pm 01:34 PM

PHPフレームワークの選択に関しては、LaravelとSymfonyは最も人気があり広く使用されているオプションの1つです。各フレームワークは、独自の哲学、特徴、強みをテーブルにもたらし、さまざまなプロジェクトやユースケースに適しています

Laravelでカスタムブレードディレクティブを作成および使用するにはどうすればよいですか? Laravelでカスタムブレードディレクティブを作成および使用するにはどうすればよいですか? Mar 17, 2025 pm 02:50 PM

この記事では、Laravelでカスタムブレードディレクティブの作成と使用を行い、テンプレートを強化します。ディレクティブの定義、テンプレートでそれらを使用し、大規模なプロジェクトでそれらを管理することをカバーし、改善されたコードの再利用性やRなどの利点を強調しています

Laravelでファイルアップロードとクラウドストレージを処理する最良の方法は何ですか? Laravelでファイルアップロードとクラウドストレージを処理する最良の方法は何ですか? Mar 12, 2025 pm 05:54 PM

この記事では、Laravelの最適なファイルアップロードとクラウドストレージ戦略を調べます。 ローカルストレージとクラウドプロバイダー(AWS S3、Google Cloud、Azure、DigitalOcean)、セキュリティ(検証、消毒、HTTPS)およびパフォーマンスオプティを強調しています

See all articles