skillup

技術ブログ

PHP

Queueの登録と実際の処理に関して

投稿日:

実務でQueueに絡んだ処理をする機会があったのでメモ。

Queueとは

倉庫管理システムを作ってた時によく出たネタですが、時間がかかる処理があったとして、その処理は同期的に処理するのではなく、ストックしておき、あとで処理(あるいはajaxのように単純に非同期)したいなんてケースがあります。

こういう時に使われるのがQueueという概念です。

キュー(queue)とは?

上の例の方が私のよりわかりやすい・・・(汗)

Queueで大事なこととしては

「キューを記録しておく場所」「処理を登録する場面」「実際の処理を行う場面」の認識でしょうか。

これを理解するのに少し時間が掛かりました・・(汗)

Laravelでこれを実行して見ます。

Laravelでのキュー処理

全体的な処理ですが、下記リンクがわかりやすくこれが最小構成で一番わかりやすいです。このブログも8割以上ここのパクリです(笑)

Laravelの処理をQueueにスタックしてレスポンスのチューニングを行おう

キューを記録しておく場所

Laravelでストック場所として定義しておけるのは下記5つです。

  • sync・・defaultではこれ。同期処理らしく積極的に使う意味はないと思われます。
  • database・・DBに登録。
  • Beanstalk・・調査中(汗)
  • Amazon SQS・・AWSのサービスです。
  • Redis・・KVSのサービスです。

databaseがわかりやすいのでこれで見ておきます。
laravel5.5のキュー投入によるジョブ処理を導入する

下記2つのファイルを設定しておきましょう。

.env

app/queue.php

ちなみにdatabaseの場合、当然テーブルを作る必要があり、下記コマンドで下記のようなテーブルを自動作成しておくことができます。

処理を登録する場面(当然まだ処理は行いません)

次は使われる処理を登録します。

ちなみに一つ一つの処理をJobと呼びます。
LaravelではJobを下記コマンドですぐに作れます。

app/Jobs/TestJob.php

2秒たってログを吐くという簡単な処理を書きます。

そしてこの処理を登録します。

例えばwebであるURL(http://sample.com/queue)にアクセスをしたら登録するとします。

DBを見るとJobが登録されているのがわかります。

これでJobが登録されているのがわかるかと思います。

実際の処理を行う場面

ストックしたジョブを行う場面を見ていきます。

上記コマンドを実行するとDBに登録している処理が実行されます。
コンソールには下記のように処理が図れます。

ログを見ていると意図した文字が吐かれているのと、処理が行われているのがわかるかと思います。DBをみてあげるとJobが削除されているのがわかると思います。

ちなみに私が携わった処理の場合、登録は別処理だったため、結局この処理は使いませんでしたが、大変参考になりましたね・・・

 

 

-PHP
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Basic認証のあるページの情報の取得

ひさびさにPHPネタです。 PHPではWEBページを保存するときにfile_get_contents(url)と書いてあげるとHTMLデータを取得できます。 が、Basic認証などのページは当然fal …

no image

composerでのライブラリ登録

今回はPHPのパッケージ管理ツールであるcomposerへのライブラリ登録を。 Contents1 ライブラリの作成2 packagistへの登録3 呼び出す側3.1 composer.json3.2 …

no image

PHPでのPDF出力 基本&日本語出力

今回はPHPでのPDFファイルの出力です。 Contents1 ライブラリ2 ソース3 参考リンク ライブラリ 使うライブラリはFPDFというライブラリです。 http://www.fpdf.org/ …

no image

エラーハンドリング

エラーが起きた時にPHPだと画面に出ますが(出ない場合は画面が白くなります)、これを検知し、ログに吐いたり任意の処理をできるのがエラーハンドリングです。 フレームワークなどにはほぼこの仕組みが内在して …

no image

PHPでのスクレイピング

本日はPHPスクレイピングについて。 スクレイピング自体はRuby、Javaとやってきました。 PHPに関しては昔、正規表現でごりごりやってましたね。これを使えば何でもできるんで一番早いです。 が・・ …