失敗したジョブ設定Laravelのキューコンポーネントは様々なキューサービスに共通のAPIを提供しています。キューによりメール送信のような時間を費やす処理を夜中まで遅らせることが可能です。これによりアプリケーションのリクエストを徹底的に引き上げることができます。キュー設定ファイルはapp/config/queue.phpです。このファイルには、フレームワークに含まれているそれぞれのドライバーへの接続設定があります。SQS、Redis、synchronous(同期ドライバー、ローカルでの使用)ドライバーが含まれています。前記のキュードライバーを使用するには、以下の対応するパッケージをcomposer.jsonに付け加えることが必要です。iron-io/iron_mq基本的な使用法キューにジョブを登録する新しいジョブをキューに入れるには`Queue::push'メソッドを使います。$message));ジョブハンドラーを定義するpushメソッドの最初の引数は、ジョブを処理するクラス名です。2番目はハンドラーに渡すデーターの配列です。ハンドラは以下のように定義します。}}キューに登録されたデーターの配列と共に、ジョブのインスタンスを受け取るための、fireメソッドが最低必要であることに注意してください。カスタムハンドラーメソッドを指定するもしfire以外のメソッドで処理したい場合は、登録するジョブにメソッドも指定してください。$message));ジョブにキュー/チューブを指定するどのキュー/チューブにジョブを登録するのかを指定することもできます。&#39;emails&#39;);同じペイロードを複数のジョブに渡す同じデーターを複数のキュージョブに送る必要がある場合は、Queue::bulkメソッドを使用して下さい。$payload);ジョブの実行を遅らせる場合によってはキュージョブの実行を遅らせたいこともあるでしょう。サインアップの15分後に顧客へメールを送信するジョブをキューしたい場合です。この場合、Queue::latorメソッドを使用して下さい。$message));この例の中で、ジョブに希望する遅延実行時間を指定するために、Carbonライブラリーを使用しています。整数で遅らせたい秒数を渡すこともできます。SQSサービスの場合、遅延は900秒(15分)の制限があります。処理済みのジョブを削除するあるジョブを処理したら、それはキューから削除されなくてはなりません。ジョブインスタンスのdeleteメソッドでこれを行います。$job-&gt;delete();}キューに再登録するもしジョブを再実行するため、ジョブに登録し直すのであれば、releaseメソッドを使用してください。$job-&gt;release();}そのジョブが再実行されるまでの間隔を秒で指定することもできます。$job-&gt;release(5);実行回数を調べるジョブの処理中に例外が起きた場合、そのジョブは自動的にキューに再登録されます。そのジョブを実行しようとした試行回数をattemptsメソッドで調べることができます。//}ジョブIDにアクセスするジョブ識別子にもアクセスできます。$job-&gt;getJobId();クロージャーのキューもしくはキューにクロージャーを登録することも可能です。これは手軽にシンプルなタスクをキュー登録する必要がある場合に大変便利です。useを通じてキューするクロージャーでオブジェクトを使用できるようにする代わりに、主キーを渡し、キュージョブの中で関連するモデルを再取得することを考慮してください。これにより、予期しないシリアライズの影響を防ぐことができます。Iron.ioのPushキューを利用する場合、キューのクロージャーで追加の予防策を取る必要があります。キューメッセージを受け取った時点でそのキューが本当にIron.ioからのリクエストであるかをチェックしてください。Pushキューの受け取りURLをhttps:://yourapp.com/queue/receive?token=秘密のトークンのような形式で登録します。次に、キューリクエストでmarshalメソッドを実行する前に、秘密のトークンの値をアプリケーションでチェックします。キューリスナーの実行LaravelのArtisanは、新しくキューに保存されたジョブを実行するコマンドを含んでいます。`queue:listen'コマンドで、このタスクを実行できます。queue:listenリスナーに使用するキュー接続を指定することもできます。connectionこのタスクを一度開始したら、手動で停止しない限り実行を続けることに注意してください。Supervisorのようなプロセスモニターを利用し、キューリスナーが確実に動作し続けるようにしてください。listenコマンドにキューのプライオリティーを設定するため、キュー接続をカンマ区切りで指定することもできます。--queue=high,lowこの例で、high-connectionはlow-connectionのジョブを実行する前にいつも処理されます。ジョブのタイムアウト時間を指定するそれぞれのジョブの実行時間を秒数で指定することもできます。--timeout=60キューのスリープ時間を指定するさらに、新しいジョブをポーリングする前に、待ち秒数を指定することもできます。--sleep=5キューにジョブがない場合のみ、キューがスリープすることに注意して下さい。ジョブが存在しているなら、キューはスリープせずに処理を続けます。キューの最初のジョブを実行するキューの最初のジョブだけを実行するには、queue:workコマンドを使用してください。queue:workデーモン・キュー・ワーカーqueue:workは更に、フレームワークを再起動せずとも連続してジョブを処理し続けるように、キューワーカーを強制するための、--daemonオプションを持っています。これにより、queue:listenと比較すると、CPU使用率を大幅に引き下げることができますが、デプロイ中は現在実行中のジョブのキューを空にするために、複雑な手順の追加が必要になります。キュー・ワーカーをデーモンモードで開始するためには、--daemonフラッグを使用します。--tries=3ご覧の通り、queue:workコマンドはqueue:listenで使用できるものと、ほとんど同じオプションをサポートしています。queue:workコマンドで全オプションを表示できます。デーモン・キュー・ワーカーでデプロイするアプリケーションをデーモン・キュー・ワーカーでデプロイする、一番簡単な方法は、デプロイを開始するときに、アプリケーションをメンテナンスモードにすることです。downコマンドで切り替えられます。アプリケーションをメンテナンスモードにしたら、Laravelは新しいジョブをキューに受け付けなくなりますが、存在しているジョブの処理は続けます。ワーカーを一番簡単に再起動するには、デプロイスクリプトの中に、次のコマンドを含めてください。queue:restartこのコマンドは、現在のジョブの処理が終了した後、全キューワーカーを再起動するように指示します。このコマンドは再起動のスケジュールするため、キャッシュシステムを利用しています。デフォルト状態では、APCuはCLIコマンドのために動作しません。APCuを使用する場合、apc.enable_cli=1をAPCu設定に追加してください。デーモンキューワーカーのコーディングデーモンキューワーカーは、各ジョブを処理する前にフレームワークを再起動しません。そのため、多くのリソースを使用するジョブを完了する前に、それらを開放するように気をつけてください。GDライブラリーを使用し、画像処理を行う場合、完了したらimagedestroyでメモリを開放する必要があるでしょう。同様に、長時間動作するデーモンに使用されると、データベース接続は切断されるでしょう。新しい接続を行うために、DB::reconnectメソッドを使う必要が起きるでしょう。PushキューPushキューでデーモンやバックグラウンドリスナーを走らせなくてもLaravel4のキュー機能を存分に利用できます。現在、PushキューはIron.ioドライバーでしかサポートされていません。開始する前にIron.ioのアカウントを作成し、Ironの認証データーをapp/config/queus.php設定ファイルに追加してください。Artisanコマンドで登録します。http://foo.com/queue/receiveこれでIronダッシュボードへログインすると、新しいPushキューが購読URLと共に表示されます。指定したキューに対し、好きなだけURLを購読することもできます。次に、queue/receiveエンドポイントへのルートを生成し、Queue::marshalメソッドからのレスポンスをリターンしてください。Queue::marshal();});marshalメソッドは正しいジョブハンドラークラスが実行されるように取り計らいます。Pushキューへのジョブを実行するには、Queue::pushメソッドと同様にキューの使用手順に従い利用してください。失敗したジョブ物事はうまく行かない場合もありますから、キュージョブが失敗することもあるでしょう。最高な人たちも失敗はするのです!Laravelは指定した回数ジョブを再実行する便利な方法を用意しています。この回数実行してもうまく行かない場合は、faild_jobsテーブルに登録されます。この失敗したジョブのテーブル名は、app/config/queue.php設定ファイルで指定できます。faild_jobsテーブルのマイグレーションを生成するには、queue:faild-tableコマンドを実行して下さい。queue:failed-tableジョブ再実行の最大回数を指定するには、queue:listenコマンドに--triesスイッチを付け実行して下さい。--tries=3キュージョブが失敗した時に呼び出されるイベントのリスナーを登録したい場合は、Queue::failingメソッドを使って下さい。このイベントは、メールかHipChatであなたのチームに通知するために便利でしょう。Arisanコマンドを利用します。queue:failedqueue:failedコマンドにジョブIDを指定すれば、接続、キュ、失敗した時間がリストされます。ジョブIDは失敗したジョブを再実行する場合にも使用します。IDが5の失敗したジョブを再実行するには、以下のコマンドを実行します。5失敗したジョブを削除するには、queue:forgetコマンドを使います。5失敗したジョブを全部消去するには、queue:flushコマンドを使用します。kawase(Translation).このバージョンのサポートは終了しています。