blogPHPでWEB+DBシステムの開発をやっています。使うことで、時間がかかる処理や、時間差で実行したい処理を非同期で実行することができます。つのキュードライバをサポートしています。ついて試してみました。使うには、app/config/queue.phpにて、利用するキューエンジンの選択、設定を行います。他の設定と同じく、app/config/local/queue.phpやapp/config/production/queue.phpなど、環境に応じて設定を切り替えることも可能です。defaultでは利用するキュードライバを指定します。connectionsキーでは、それぞれのドライバについて接続情報を指定します。下記では、beanstalkdの接続情報を指定しています。],];キューへジョブを登録キューへのジョブを登録するには、Queueクラスのpushメソッドを使います。引数にはジョブを実行するワーカーのクラス名を、第二引数にはワーカーに渡すパラメータを指定します。Carbon::now()]);ここでは、ワーカーのクラス名のみを指定しているため、ジョブを実行する際はfireメソッドが呼ばれます。他にもMyWorker@doJobとすることで任意のメソッドを実行したり、クロージャを渡して、そのクロージャをワーカーとして実行したりできます。詳しくはドキュメントを参照してください。http://laravel.com/docs/queueshttp://laravel4.kore1server.com/docs/42/queuesワーカーの実装ジョブを処理するワーカーとしてMyWorkerクラスを実装します。Object)で良いです。MyWorkerクラスにはfireメソッドを実装します。ジョブがキューに登録されると、リスナーからこのメソッドが呼ばれます。引数にはジョブインスタンス、第二引数では、Queue::push()の第二引数で指定したパラメータが渡されます。このパラメータはジョブに入る時にjson_encode()されるので、オブジェクトのインスタンスはプロパティの連想配列となります。下記の実装では、渡されたパラメータを元に文字列を生成して、echoで標準出力へ出力しているだけです。ジョブが正常に完了したら、delete()メソッドで、ジョブを削除しておきます。これを行わないと同じジョブが何度も実行されています。}}キューの監視キューを監視してワーカーを起動するリスナーを起動します。コマンドですでに用意されているのでこれを利用します。queue:listenコマンドを実行すると、キューを監視状態になります。この状態でキューにジョブが登録されていると、自動でワーカーが起動して処理が実行されます。queue:listenこの状態でジョブが登録されると下記のように出力されます。常時起動するように設定しておくと良いでしょう。一定時間後に実行するジョブQueue::push()で登録したジョブは、リスナーが感知するとワーカーが起動して実行されます。それとは別に、Queue::later()というメソッドを使うと、一定時間経過後に実行するジョブを登録することができます。引数には、ジョブの実行を開始する時間を指定します。数値を渡すと秒数として認識され、その秒数が経過した際にジョブが実行されます。Carbonクラスのインスタンスを渡すとCarbonクラスで指定された日時に実行されるジョブとして登録されます。第二引数と第三引数は、Queue::push()の第一引数と第二引数と同じです。下記の例では、10秒後に実行されるジョブを登録しています。Carbon::now()]);リスナー側では下記のような出力になります。秒ずれていることが分かります。利用した際は、数秒のずれがありました。多少のずれは発生するので、それを認識した上で利用すると良いでしょう。サポートしているキュードライバ(Redisを除く)を見てみましょう。syncデフォルトで指定されているドライバです。仕組みとしてはキュー、ワーカーの流れを通るのですが、ジョブが登録されると、即時にワーカーが実行されます。非同期処理にはならないので、実際にキューを使う場面では、他のドライバを利用する必要があります。オープンソースのキューイングシステムです。自体のインストールが必要になります。パッケージでも公開されているので、利用するプラットフォームごとに選択してインストールすると良いです。