ホームページ >バックエンド開発 >PHPチュートリアル >Laravel 学習 3: Laravel キューの使用法チュートリアル

Laravel 学習 3: Laravel キューの使用法チュートリアル

WBOY
WBOYオリジナル
2016-06-23 13:32:20821ブラウズ

概要

キューの概念: 簡単に説明します。分からない場合は自分で解決できます。 (追記: Laravel のバージョンは 5.1)
アプリサーバー開発では、次の状況によく遭遇します:

大きなタスクは 1、2、3、4 つの小さなタスクに分割でき、そのうち 2 の完了は 1 に依存します。 、4の完了は2に依存します。この場合、1、2、および 4 はトランザクションとして理解でき、順番に実行する必要があり、そうしないとタスクを完了できません。ただし、タスク 3 はタスク 1、2、および 4 とは何の関係もありません。タスク 3 は独立して完了でき、誰が最初に誰が最後に来るかは関係ありません。具体的には、メッセージのプッシュ、電子メールの送信などのタスクは 3 番目のタスクと同じ属性です。

メッセージキューの理解

この部分については、典型的な生産者/消費者モデルに属します。プロデューサー プログラムはタスクを作成し、キューに入れます。次に、コンシューマー プログラムがキューを確認し、タスクを見つけて消費します。理論的な理解は明らかです。実際に見てみましょう。

laravel によって実装されたメッセージキュー

公式ドキュメント: laravel のキュー

1. プロデューサーを実装する

メッセージキューモデルを通して、プロデューサーが存在する必要があることがわかったので、laravel Woolen クロスでこのプロデューサーを構築する方法は?とてもシンプルです。

php 職人 make:command PushMessage ?queued

実行後、アプリ ディレクトリに appCommandsPushMessage.php が表示されます。このファイルを開くと、Command クラスが統合されていることがわかりますが、ここにはありません。 . クラス (バージョン 5.0 を使用している場合は存在しますが、5.1 には存在しません)。心配しないでください。新しい appCommandsCommand.php を自分で作成してください。コードの内容は次のとおりです。

<?phpnamespace App\Commands;abstract class Command {    //}

OK!次に、もう一度 appCommandsPushMessage.php ファイルに戻ります。このファイルにはメソッド ハンドルが含まれています。ここでは、デモンストレーションの目的で、ファイルを書き込む操作を使用します。そこに次の内容を書きます

file_put_contents('D:/webApp/test.txt', 'hello world!');

この時点で、プロデューサーは書き終わったので、コントローラーを見つけます。このプロデューサーによって生成されたコンテンツをキューにプッシュします。ここで説明するのは、appHttpControllersTestController.php で行った呼び出しです。次のソースコードを投稿しましょう:

<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use App\Http\Requests;use App\Http\Controllers\Controller;use Queue;use App\Commands\PushMessage;class TestController extends Controller {    /** * Display a listing of the resource. * * @return Response */    public function index() {        Queue::later(60, new PushMessage());// 推进队列        return view('welcome');    }}

ここで注意する必要がある点が 2 つあります:
① ここでは Queue Facade を使用していますが、公式の推奨では Bus Facade を使用することが推奨されています。この 2 つは同じ効果を持ちます。自分で比較検討してください。 。
② 効果を確認するために、キュー内のタスクを実行するために特別に 60 秒の遅延を追加しました。

2. キューデータテーブルの保存場所

生産するだけでは十分ではなく、生産された製品を保管する場所が必要です。ここでは簡単にするために、データベース方式を使用します。他の方法も簡単にできるので、ぜひ自分で試してみてください。データベースを使用するには、次の設定が必要です:

  • config/queue.php を開き、デフォルトのキュードライバーをデータベースに変更します:

    default' => env('QUEUE_DRIVER', 'database')

  • 構成後、データベース接続サービスを実行します。これについてはもう話しません。 config/app.php で設定します

  • 次の 2 つのコマンドを実行します:

    phpArtisan queue:table
    phpArtisan Migrate

  • コマンドの意味は、タスクを保存するためにデータベースにキュー テーブルを作成することです。

    保存したタスクのリストページが完成しました。次のステップは消費することです。それはとても簡単です。

    3. キューコンシューマー

    このコンシューマーの概念は、公式ドキュメントに対応しており、実行されるタスクを検出すると、指定された条件に従って自動的に実行されます。

    phpArtisan queue:listen

    テストされたキューサービス

    今度は結果をテストします。私のローカル環境を例に考えてみましょう。まずプログラムを実行し、いくつかのタスクを生成します: ブラウザで開きます: http://127.0.0.1/laravel/public/index.php この時点でデータベースを開くと、次の内容が表示されます:


    次に、リスニング プログラム DOS を実行すると、次のメッセージが表示されたら、プログラムが実行されたことを意味します:

    この時点で、対応するディレクトリに移動すると、ファイル test.txt が表示されます。
    さらに詳しく知りたい場合は、公式ドキュメントを参照してください。 Laravel の Facade を作成するための変更と準備 この概念を理解するのに長い時間がかかりました。


    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。