目次
簡単な紹介:
言語:
メッセージ キューの一般的なプロセスは次のとおりです:
利点:
以下では主に think-queue の使用方法を紹介します
メッセージ キューの基本構成
ホームページ PHPフレームワーク ThinkPHP この記事では、ThinkPHP で think-queue を使用して Redis メッセージ キューを実装する方法を説明します。

この記事では、ThinkPHP で think-queue を使用して Redis メッセージ キューを実装する方法を説明します。

Jun 28, 2022 pm 03:33 PM
thinkphp

この記事では、thinkphp に関する関連知識を提供します。主に、think-queue を使用して Redis メッセージ キューを実装する際の関連問題を整理しています。一緒に見てみましょう。みんな。 。

この記事では、ThinkPHP で think-queue を使用して Redis メッセージ キューを実装する方法を説明します。

推奨される学習: 「PHP ビデオ チュートリアル

簡単な紹介:

メッセージ キューの中央 ソフトウェアは大規模システムの重要なコンポーネントであり、徐々にエンタープライズ システムの内部通信の中核手段になってきました。疎結合、非同期メッセージング、トラフィックのピークカット、信頼性の高い配信、ブロードキャスト、フロー制御、結果整合性などの一連の機能を備えており、非同期 RPC の主要な手段の 1 つとなっています。

言語:

メッセージ キューには 2 つのロールとコンテナーがあります。ロールはプロデューサー (タスクの公開を担当) とコンシューマー (タスクの実行を担当) です。コンテナーは / を保存するために使用されます。プロデューサーによってリリースされたタスクをスタックし、互いに影響を与えることなくリリースと実行の 2 つのステップを分離します。

メッセージ キューの一般的なプロセスは次のとおりです:

プロデューサはタスクをパブリッシュしてメッセージ キューに保存/蓄積し、コンシューマは主導権を持ってメッセージ キューからタスクを取り出して実行します。最初に公開されたタスクが最初に実行されます (キュー: 先入れ先出し)。コンシューマがない場合、タスクは実行のために取り出されるのを待ってキューに蓄積されます。

利点:

メッセージ キューは、同時実行性が高い、または処理時間が長い、バッチ操作が必要なサードパーティ インターフェイスに適しています。テキスト メッセージの送信や電子メールの送信に使用できますが、これらに限定されません。 、APP プッシュなど、クロスシステムをサポートしています。つまり、このシステムによって公開されたメッセージ キューは、単独でタスクを実行することも、他のシステムに対してタスクを実行することもできます。同様に、このシステムは、メッセージ キューを実行するコンシューマとしても機能します自身または他のシステムによって公開されたタスク。


以下では主に think-queue の使用方法を紹介します

ThinkPHP の Queue には、Redis、Database、Topthink、Sync の 4 つのドライバーが組み込まれています。Redis はここで使用されており、またRedis

シンクキュー キュー メッセージは、公開、取得、実行、削除、再公開、遅延公開、タイムアウト制御、その他の操作などのタスクを実行できます

メッセージ キューの基本構成

エクストラ ディレクトリに queue.php 設定ファイルを作成します。

<?phpreturn  [
    &#39;connector&#39;  => 'Redis',
    'expire'     => null,   // 任务过期时间,默认为60秒,若要禁用,则设置为 null
    'default'    => 'REDIS_QUEUE',  // 默认的队列名
    'host'       => '127.0.0.1',   // redis 主机ip
    'port'       => 6379,   // redis 端口
    'password'   => '',   // redis 密码
    'select'     => 0,   // 使用哪里一个 db,默认为 db0
    'timeout'    => 0,   // redis 连接的超时时间
    'persistent' => false,   // 是否是长连接];

なぜここに配置されるかというと、Queue のソース コードがデフォルトでエクストラからキュー ファイルを読み取って、設定情報。設定ファイルを別の場所に配置する場合は、以下の図に示すように、ソース コード内のデフォルトの取得設定をそれに応じて変更する必要があります。プロデューサー

テスト クラスを作成し、プロデューサー メソッドを作成しますこの記事では、ThinkPHP で think-queue を使用して Redis メッセージ キューを実装する方法を説明します。

<?phpnamespace  app\api\controller;use think\Controller;use think\Queue;class Test extends Controller{
    // 生产者,添加消息队列
    public function addQueue()
    {
        // 参数
        $data = [
            &#39;id&#39; => rand(0, 99),
            'userName' => '一起摸鱼'
        ];

        // 消息队列名
        $queueName = 'testQueue';

        // 推入消息队列,注意这里的 ::class 是PHP5.5才有的写法
        $isPushed = Queue::push(TestQueue::class, $data, $queueName);
		// PHP5.5以下的可以直接写命名空间
        // $isPushed = Queue::push('app\common\queue\TestQueue', $data, $queueName);
        
        if ($isPushed !== false) {
            // 成功之后的业务
            echo '队列加入成功';
        } else {
            // 失败之后的业务
            echo '队列加入失败';
        }
    }}
Consumer

メッセージ キュー内のタスクを実行するためにコンシューマーとして使用される TestQueue クラスを作成します

<?phpnamespace  app\common\queue;use think\Log;use think\queue\Job;class TestQueue{
    // 消费者执行入口
    public function fire(Job $job, $data)
    {
        // 具体执行业务
        $isJobDone = $this->doJob($data);
        
        if ($isJobDone) {
            // 消息队列执行成功,删除队列,否则会一直执行
            $job->delete();
        } else {
            // 消息队列执行失败
            // 获取消息队列已经重试了几遍
            $attempts = $job->attempts();
            if ($attempts == 0 || $attempts == 1) {
                // 重新发布,参数 delay 是延时发布的时间
                $job->release(2);
            }
        }
    }

    // 消息队列执行失败后会自动执行该方法
    public function failed($data)
    {
        Log::error('消息队列达到最大重复执行次数后失败:' . json_encode($data));
    }

    // 消息队列执行方法
    public function doJob($data)
    {
        // 具体执行业务
        
        
        $data = json_encode($data);
        echo '消息队列:' . $data;
        // 这里的判断条件以具体业务是否执行成功进行判断
        if ($data) {
            echo "执行成功";
            return true;
        } else {
            echo "执行失败";
            return false;
        }
    }}
実行結果

リクエスト インターフェイス、プロデューサー パブリッシュ タスク

redis キュー ストレージ タスク

この記事では、ThinkPHP で think-queue を使用して Redis メッセージ キューを実装する方法を説明します。

次のステップは、キューのリスニング モードを有効にすることです。タスクが追加されるたびにキューを手動で実行することは不可能であるためです。キューには 2 つのリスニング モードがあり、設定パラメータは次のとおりです:

この記事では、ThinkPHP で think-queue を使用して Redis メッセージ キューを実装する方法を説明します。

プロジェクト ルート ディレクトリで実行します

この記事では、ThinkPHP で think-queue を使用して Redis メッセージ キューを実装する方法を説明します。php think queue: work --queue キュー名

#コンシューマーを開いてタスクを実行します

#Redis キュー内のタスクも実行後に削除されます


この記事では、ThinkPHP で think-queue を使用して Redis メッセージ キューを実装する方法を説明します。ただし、必要に応じて、ターミナルを閉じた後もキューを開始できるように、コンシューマー デーモン プロセスの実行を一時停止する必要もあります。

nohup php think queue:listen --queue キュー名&

この記事では、ThinkPHP で think-queue を使用して Redis メッセージ キューを実装する方法を説明します。

PS: シェル終了時に入力します。ターミナルを終了するには

この記事では、ThinkPHP で think-queue を使用して Redis メッセージ キューを実装する方法を説明します。

PS: シェルに exit と入力してターミナルを終了します
PS: exit と入力しますシェル ターミナルを終了しますnohup が正常に実行され、プログラムを閉じるボタンをクリックしてターミナルを閉じると、コマンドに対応するセッションが切断され、コマンドに対応するプロセスが発生します。 nohup も一緒にシャットダウンする必要があることが通知されます。
この時点で、メッセージ キューのプロセス全体が終了しました。 推奨学習: 「PHP ビデオ チュートリアル

以上がこの記事では、ThinkPHP で think-queue を使用して Redis メッセージ キューを実装する方法を説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

thinkphpプロジェクトの実行方法 thinkphpプロジェクトの実行方法 Apr 09, 2024 pm 05:33 PM

ThinkPHP プロジェクトを実行するには、Composer をインストールし、Composer を使用してプロジェクトを作成し、プロジェクト ディレクトリに入り、php bin/consoleserve を実行し、http://localhost:8000 にアクセスしてようこそページを表示する必要があります。

thinkphp にはいくつかのバージョンがあります thinkphp にはいくつかのバージョンがあります Apr 09, 2024 pm 06:09 PM

ThinkPHP には、さまざまな PHP バージョン向けに設計された複数のバージョンがあります。メジャー バージョンには 3.2、5.0、5.1、および 6.0 が含まれますが、マイナー バージョンはバグを修正し、新機能を提供するために使用されます。最新の安定バージョンは ThinkPHP 6.0.16 です。バージョンを選択するときは、PHP バージョン、機能要件、コミュニティ サポートを考慮してください。最高のパフォーマンスとサポートを得るには、最新の安定バージョンを使用することをお勧めします。

thinkphpの実行方法 thinkphpの実行方法 Apr 09, 2024 pm 05:39 PM

ThinkPHP フレームワークをローカルで実行する手順: ThinkPHP フレームワークをローカル ディレクトリにダウンロードして解凍します。 ThinkPHP ルート ディレクトリを指す仮想ホスト (オプション) を作成します。データベース接続パラメータを構成します。 Webサーバーを起動します。 ThinkPHP アプリケーションを初期化します。 ThinkPHP アプリケーションの URL にアクセスして実行します。

laravelとthinkphpではどちらが優れていますか? laravelとthinkphpではどちらが優れていますか? Apr 09, 2024 pm 03:18 PM

Laravel フレームワークと ThinkPHP フレームワークのパフォーマンスの比較: ThinkPHP は、最適化とキャッシュに重点を置いて、一般に Laravel よりもパフォーマンスが優れています。 Laravel は優れたパフォーマンスを発揮しますが、複雑なアプリケーションの場合は、ThinkPHP の方が適している可能性があります。

thinkphpのインストール方法 thinkphpのインストール方法 Apr 09, 2024 pm 05:42 PM

ThinkPHP のインストール手順: PHP、Composer、および MySQL 環境を準備します。 Composer を使用してプロジェクトを作成します。 ThinkPHP フレームワークと依存関係をインストールします。データベース接続を構成します。アプリケーションコードを生成します。アプリケーションを起動し、http://localhost:8000 にアクセスします。

thinkphpのパフォーマンスはどうですか? thinkphpのパフォーマンスはどうですか? Apr 09, 2024 pm 05:24 PM

ThinkPHP は、キャッシュ メカニズム、コードの最適化、並列処理、データベースの最適化などの利点を備えた高性能 PHP フレームワークです。公式パフォーマンステストでは、1秒あたり10,000以上のリクエストを処理できることが示されており、実際のアプリケーションではJD.comやCtripなどの大規模なWebサイトやエンタープライズシステムで広く使用されています。

開発に関する提案: API 開発に ThinkPHP フレームワークを使用する方法 開発に関する提案: API 開発に ThinkPHP フレームワークを使用する方法 Nov 22, 2023 pm 05:18 PM

開発の提案: API 開発に ThinkPHP フレームワークを使用する方法 インターネットの継続的な発展に伴い、API (アプリケーション プログラミング インターフェイス) の重要性がますます高まっています。 API は、異なるアプリケーション間の通信の橋渡しとなるもので、データの共有や関数の呼び出しなどを実現し、開発者に比較的簡単かつ迅速な開発手法を提供します。優れた PHP 開発フレームワークである ThinkPHP フレームワークは、効率的でスケーラブルで使いやすいです。

開発に関する提案: ThinkPHP フレームワークを使用して非同期タスクを実装する方法 開発に関する提案: ThinkPHP フレームワークを使用して非同期タスクを実装する方法 Nov 22, 2023 pm 12:01 PM

「開発に関する提案: ThinkPHP フレームワークを使用して非同期タスクを実装する方法」 インターネット技術の急速な発展に伴い、Web アプリケーションには、多数の同時リクエストと複雑なビジネス ロジックを処理するための要件が​​ますます高まっています。システムのパフォーマンスとユーザー エクスペリエンスを向上させるために、開発者は多くの場合、電子メールの送信、ファイルのアップロードの処理、レポートの生成など、時間のかかる操作を実行するために非同期タスクの使用を検討します。 PHP の分野では、人気のある開発フレームワークとして ThinkPHP フレームワークが、非同期タスクを実装するための便利な方法をいくつか提供しています。

See all articles