検索
ホームページPHPフレームワークLaravelLaravelキューの簡単な使用法を説明する例

この記事では、主にLaravelキュー、どのような状況でキューを使用するか、キューストレージの設定などを紹介するlaravel関連知識を皆様にお届けしますので、皆様のお役に立てれば幸いです。

Laravelキューの簡単な使用法を説明する例

[関連する推奨事項: laravel 学習チュートリアル ]

この記事では、Laravel でキューを使用する方法と、その理由を理解する方法を紹介します。キュー

キューをいつ使用するか?

ファイルをアップロードしてからいくつかの形式変換を実行するなど、時間がかかります。

テキスト メッセージの送信など、配信速度を確保する必要がある場合、他人の API を呼び出す必要があるため、常に失敗する可能性があり、確実に配信するにはリトライが不可欠です。

使用プロセスを記録します:

1. キュー ストレージを設定します

キュー設定ファイルは config/queue.php に保存されます。デフォルトは sync 同期処理です。 redis、データベース等が選択可能です。利用方法は以下の通りです。

データベース

データ テーブル ストレージ タスクを作成し、artisan コマンドの実行後にデータ移行を実行します

php artisan queue:table
php artisan migrate

Redis

Redis キュー ドライバーを使用するには、構成ファイル config/database.php で Redis データベース接続を構成する必要があります。

Redis キュー接続で Redis クラスターを使用する場合、キュー名にはキー ハッシュ タグが含まれている必要があります。これは、特定のキューのすべての Redis キーが同じハッシュに配置されるようにするためです:

'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => 'default',
'retry_after' => 90,
],

2. タスク クラスの作成

キューのタスク クラスは app/Jobs にあります/ ディレクトリ Next

php 職人 make:job SaveBusLine

ファイルを次のように変更します:

namespace App\Jobs;
use App\Http\Repository\BusRepository;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
class SaveBusLine implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* 任务最大尝试次数。
*
* @var int
*/
public $tries = 3;
/**
* 任务运行的超时时间。
*
* @var int
*/
public $timeout = 60;
private $datum;
/**
* Create a new job instance.
* @param array|object $datum
*
* @return void
*/
public function __construct($datum)
{
$this->datum = $datum;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
BusRepository::getInstent()->updateBusLine($this->datum);
}
}

コントローラーまたはウェアハウスでキュー メソッドを呼び出します:

use App\Jobs\SaveBusLine;
use Carbon\Carbon;
/***************** 队列操作 start *******************/
SaveBusLine::dispatch($arrayData)->delay(Carbon::now()->addMinute(1));
/***************** 队列操作 end *******************/

3. キューの開始タスク

phpArtisan queue:work

4. スーパーバイザーの設定

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

スーパーバイザーはLinux オペレーティング システム queue:listen または queue:work コマンドが失敗した後に自動的に再起動するプロセス監視ソフトウェア。 Ubuntu に Supervisor をインストールするには、次のコマンドを使用できます:

sudo apt-get install supervisor

{tip} Supervisor を手動で構成するのが少し面倒に思える場合は、Laravel プロジェクト用に Supervisor を自動的にインストールして構成できる Laravel Forge の使用を検討してください。 。

#スーパーバイザーの設定

スーパーバイザー設定ファイルは通常、/etc/supervisor/conf.d ディレクトリに配置されます。このディレクトリには、プロセスを監視する方法をスーパーバイザに指示するための構成ファイルをいくつでも作成できます。たとえば、queue:work プロセスを開始および監視するための laravel-worker.conf を作成します。

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php ~/laravel/artisan queue:work redis --sleep=3 --tries=3
autostart=true
autorestart=true
user=lisgroup
numprocs=8
redirect_stderr=true
stdout_logfile=/home/lisgroup/logs/worker.log

この例の numprocs コマンドは、Supervisor に 8 つの queue:work プロセスを実行および監視するように要求します。実行に失敗してから再起動します。もちろん、選択したキュー ドライバーを表示するには、queue:work redis コマンドを変更する必要があります。また、実行ユーザー user=XXX

Start Supervisor

この構成ファイルを作成した後、Supervisor 構成を更新し、次のコマンドを使用する必要があります。スーパーバイザー プロセスを開始するには:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*

スーパーバイザーの設定と使用方法の詳細については、スーパーバイザーの公式ドキュメントを参照してください。

5. 失敗したタスクの処理

キュー内のタスクが失敗することがあります。心配しないでください。物事が常に順風満帆に進むとは限りません。 Laravel には、タスクの最大再試行回数を指定する便利な方法が組み込まれています。タスクがこの再試行回数を超えると、そのタスクは failed_jobs データ テーブルに挿入されます。 failed_jobs テーブルの移行ファイルを作成するには、queue:failed-table コマンドを使用してから、 mitigArtisan コマンドを使用して failed_jobs テーブルを生成します。

php artisan queue:failed-table
php artisan migrate

その後、キュー プロセッサを実行し、キュー ワーカーの場合は、コマンドを渡す必要があります。 --tries パラメーターは、タスクの最大再試行回数を指定します。指定しない場合、タスクは永続的に再試行されます:

php artisan queue:work redis --tries=3

6. 失敗したタスクのクリア

タスク クラスで失敗したメソッドを直接定義でき、タスクの終了時にタスクのクリーンアップを実行できます。ロジックが失敗します。この場所は、ユーザーに警告を送信したり、タスク実行の操作をリセットしたりするのに最適です。タスクを失敗させる例外情報は、失敗したメソッドに渡されます:

namespace App\Jobs;
use Exception;
use App\Podcast;
use App\AudioProcessor;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class ProcessPodcast implements ShouldQueue
{
use InteractsWithQueue, Queueable, SerializesModels;
protected $podcast;
/**
* 创建一个新的任务实例。
*
* @param Podcast $podcast
* @return void
*/
public function __construct(Podcast $podcast)
{
$this->podcast = $podcast;
}
/**
* 执行任务。
*
* @param AudioProcessor $processor
* @return void
*/
public function handle(AudioProcessor $processor)
{
// 处理上传播客...
}
/**
* 要处理的失败任务。
*
* @param Exception $exception
* @return void
*/
public function failed(Exception $exception)
{
// 给用户发送失败通知,等等...
}
}

[関連する推奨事項:

laravel ビデオ チュートリアル ]

以上がLaravelキューの簡単な使用法を説明する例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はCSDNで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
最新のLaravelバージョンは何ですか?最新のLaravelバージョンは何ですか?May 09, 2025 am 12:09 AM

2023年10月の時点で、Laravelの最新バージョンは10.xです。 1.Laravel10.xはPHP8.1をサポートし、開発効率を向上させます。 2.JetStreamは、LiveWireとInertia.jsのサポートを改善し、フロントエンドの開発を簡素化します。 3.ELOQUENTORMフルテキスト検索機能を追加して、データ処理のパフォーマンスを向上させます。 4.依存関係パッケージの互換性に注意してください。それを使用して、キャッシュ最適化パフォーマンスを適用してください。

Laravelの移行:データベース管理に関する初心者向けガイドLaravelの移行:データベース管理に関する初心者向けガイドMay 09, 2025 am 12:07 AM

laravelMigrationsStreamLedinedAtabaseManagementByprovidingviding version controlforyourdatabaseschema.1)theyoutodedodefineSteStretructure ofyourdatabase、Making eaSytomeChangeSesime.2)移民の移民は、環境を取得することを確認します

Laravel Migration:ベストコーディングガイドLaravel Migration:ベストコーディングガイドMay 09, 2025 am 12:03 AM

Laravelの移行システムは、開発者がデータベースを設計および管理するための強力なツールです。 1)移行ファイルに明確に名前が付けられていることを確認し、動詞を使用して操作を説明します。 2)フィールドに一意の制約を追加するなど、データの整合性とパフォーマンスを検討します。 3)トランザクション処理を使用して、データベースの一貫性を確保します。 4)パフォーマンスを最適化するために、移行の最後にインデックスを作成します。 5)移行の原子性を維持すると、各ファイルには1つの論理操作のみが含まれます。これらのプラクティスを通じて、効率的で保守可能な移行コードを作成できます。

最新のLaravelバージョン:最新の機能を最新の状態に保ちます最新のLaravelバージョン:最新の機能を最新の状態に保ちますMay 09, 2025 am 12:03 AM

Laravelの最新バージョンは2023年初頭にリリースされた10.xです。このバージョンは、Eloquentormの機能と簡素化されたルーティングシステムをもたらし、開発効率とパフォーマンスを向上させますが、問題を防ぐためにアップグレード中に慎重にテストする必要があります。

Mastering Laravel Soft Deletes:ベストプラクティスと高度なテクニックMastering Laravel Soft Deletes:ベストプラクティスと高度なテクニックMay 08, 2025 am 12:25 AM

laravelsoftdeleteSallow withoutremovingRecordsfromthedatabase.to implement:1)usetheSoftdeStreateStraitinyourModel.2)usetrashed()toincludeSoft-deletedRecordSinqueries.3)createcustomscopeslisededcoded()for Strimed()for

Laravel Soft Deletes:レコードの復元と永続的な削除Laravel Soft Deletes:レコードの復元と永続的な削除May 08, 2025 am 12:24 AM

Laravelでは、Restore()メソッドを使用してソフト削除されたレコードを復元し、ForcedElete()メソッドを永続的に削除します。 1)trashed() - > find() - > restore()を使用して単一のレコードを復元し、onlytrashed() - > restore()を使用して単一のレコードを復元します。 2)withtrashed() - > find() - > forcedelete()を使用して単一のレコードを永続的に削除し、複数のレコードを使用してonlytrashed() - > forcedelete()を使用します。

現在のLaravelリリース:今日ダウンロードしてアップグレードしてください!現在のLaravelリリース:今日ダウンロードしてアップグレードしてください!May 08, 2025 am 12:22 AM

拡張されたEloquentorm機能と新しいルーティング機能を提供するため、最新のLaravelバージョンをダウンロードしてアップグレードする必要があります。アップグレードするには、次の手順に従います。1。現在のアプリケーションをバックアップします。2。composer.jsonファイルを最新バージョンに更新します。3。更新コマンドを実行します。破棄された機能やパッケージの互換性など、いくつかの一般的な問題が発生する可能性がありますが、これらの問題は参照文書とコミュニティサポートを通じて解決できます。

Laravel:最後のバージョンにいつ更新する必要がありますか?Laravel:最後のバージョンにいつ更新する必要がありますか?May 08, 2025 am 12:18 AM

あなたは、clearlylyly outweighthecosts.1)newfeaturesandimprovementscanenhanceourapplication.2)securityupdateseupdates arecrneraptreaddressed.3)パフォーマンスゲインズマイスハイティファーアップデートアップアップドラッドルスエルアップアップルームスルズエンス

See all articles

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境