この記事では、主にLaravelキュー、どのような状況でキューを使用するか、キューストレージの設定などを紹介するlaravel関連知識を皆様にお届けしますので、皆様のお役に立てれば幸いです。
[関連する推奨事項: laravel 学習チュートリアル ]
この記事では、Laravel でキューを使用する方法と、その理由を理解する方法を紹介します。キュー
ファイルをアップロードしてからいくつかの形式変換を実行するなど、時間がかかります。
テキスト メッセージの送信など、配信速度を確保する必要がある場合、他人の API を呼び出す必要があるため、常に失敗する可能性があり、確実に配信するにはリトライが不可欠です。
使用プロセスを記録します:
キュー設定ファイルは 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, ],
キューのタスク クラスは 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 *******************/
phpArtisan queue:work
スーパーバイザーのインストール
スーパーバイザーは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
Start Supervisor
この構成ファイルを作成した後、Supervisor 構成を更新し、次のコマンドを使用する必要があります。スーパーバイザー プロセスを開始するには:sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start laravel-worker:*
php artisan queue:failed-table php artisan migrate
php artisan queue:work redis --tries=3
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 サイトの他の関連記事を参照してください。