品質管理/QA横浜Laravelのキューイングを実装するはじめにLaravel5で、とあるサービスの並行して走る複数のジョブをCommand&タスクスケジューラで実装してしばらく運用していたところ、処理量が増えるにつれてSQLエラーが不定期に頻発するようになりました。そこで、いままで利用していなかったキューの実装に置き換えたところ、今のところ上手く動いているため、実装をメモしておきます。SQSなど、様々なキューイングサービスと連携するためのドライバをあらかじめ備えており、設定を変更する程度で、使い分けをおこなうことができます。今回は、お手軽なところで、データベースを利用してみます。Start設定ファイルの変更.envファイルに、QUEUE_DRIVER=databaseを記載します。データベースの標準テーブル名は、jobsですが、変更の必要がある場合、config/queue.phpで変更できます。テーブルの作成artisanでテーブルを作成します。queue:tableでmigration用のファイルが作成されるので、migrationを実行してテーブルを作成します。migrateジョブの作成artisanで、キュー用のジョブクラスを作成します。以下のコマンドを実行すると、app/Jobsにクラスが作成されます。}}キューの実行dispatch()メソッドでジョブを起動します。SampleJob());コンストラクタで値を引き渡すこともできます。SampleJob($id));dispatchされたジョブは、キューに格納されます。(ここの場合はjobsテーブルにinsertされます)キューワーカーの起動キューワーカーを起動すると、キューに格納されたジョブが順次実行されます。コマンドで起動します。--onceジョブの最大実行回数を指定したりすることができます。殆どの場合、キューは非同期で実行されるため、ワーカーの監視が必要となります。Laravelのマニュアルでは、Supervisorの利用や、Redisを監視するHorizonが紹介されています。単純な監視の場合は、テーブルのレコード数を定期監視する程度で十分です。関連記事PlantUML&AtomでらくらくUMLドキュメントが嫌いです。erro...マクド奄美にはマクドナルドがありません。紅葉狩り2017株式会社イーツー・インフォ株式会社イーツー・インフォは、横浜でWebシステム開発・Webサイト構築を行っている企業です。