この記事では、主に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=36. 失敗したタスクのクリアタスク クラスで失敗したメソッドを直接定義でき、タスクの終了時にタスクのクリーンアップを実行できます。ロジックが失敗します。この場所は、ユーザーに警告を送信したり、タスク実行の操作をリセットしたりするのに最適です。タスクを失敗させる例外情報は、失敗したメソッドに渡されます:
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 サイトの他の関連記事を参照してください。

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

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

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

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

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

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

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

Dreamweaver Mac版
ビジュアル Web 開発ツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
