ホームページ バックエンド開発 PHPチュートリアル ユーザーエクスペリエンスに影響を与えることなく、前景でSMSメッセージをバックグラウンド非同期バッチ送信する方法は?

ユーザーエクスペリエンスに影響を与えることなく、前景でSMSメッセージをバックグラウンド非同期バッチ送信する方法は?

Mar 31, 2025 pm 11:45 PM
redis red talk

この記事では、ユーザーエクスペリエンスに影響を与えることなく、フロントエンドが背景をトリガーできるように背景をトリガーできるようにバッチでテキストメッセージを送信する方法を紹介します。ユーザーがボタンをクリックすると、フロントデスクがすぐに成功プロンプトを返し、バックデスクがデータベースクエリを実行し、Redisキャッシュ書き込み、SMSを非同期に送信します。

ユーザーエクスペリエンスに影響を与えることなく、前景でSMSメッセージをバックグラウンド非同期バッチ送信する方法は?

コアアイデア:非同期処理

このソリューションは、非同期処理メカニズムを使用して、時間のかかる操作を背景に移動して実行し、前景のブロックを避けます。特定の手順は次のとおりです。

  1. フロントエンドAJAXリクエスト:ユーザーは[送信]ボタンをクリックし、フロントエンドはAjaxを使用してリクエストを背景に送信します。要求パラメーターには、SMSテンプレートID、携帯電話番号リスト、SMSコンテンツが含まれます。

     $ .ajax({
        url: '/send-sms'、
        タイプ:「投稿」、
        データ:{template_id:123、Mobiles:['13800138000'、 '13800138001']、コンテンツ: 'Test sms'}、
        成功:関数(応答){
            alert( 'sms send requestが送信されました');
        }、
        エラー:関数(エラー){
            alert( '要求が失敗しました:' error.responsetext);
        }
    });
    ログイン後にコピー
  2. 背景はリクエストを受信して​​応答を返します。背景がAJAX要求を受信した後、すぐに成功した応答(JSON形式)を返して、リクエストが受信されたことをフロントエンドに通知します。重要なのは、SMS送信ロジックが非同期タスクに配置されることです。

     //バックグラウンドコントローラーメソッドパブリック関数sendsmsaction(){
        $ templateId = $ _post ['template_id'];
        $ MOBILES = $ _POST ['Mobiles'];
        $ content = $ _post ['content'];
    
        //成功した応答をすぐに返しますecho json_encode(['success' => true、 'message' => '受信、SMS送信タスクの開始']);
    
        //キューにタスクを追加します(たとえば、RedisやRabbitMQを使用)
        $ this-> addtasktoqueue($ templateid、$ mobiles、$ content);
    }
    ログイン後にコピー
  3. 非同期タスク処理: addTaskToQueueメソッドは、メッセージキューにタスクを送信するSMSを追加します。独立したバックグラウンドプロセス(たとえば、キュ​​ーワーカーを使用する)は、キューに継続的に耳を傾け、タスクを取得し、実行します。

     //キューにタスクを追加する(redisを使用した例)
    プライベート機能addtasktoqueue($ templateid、$ mobiles、$ content){
        $ redis = new Redis();
        $ redis-> connect( '127.0.0.1'、6379);
        $ redis-> lpush( 'sms_queue'、json_encode(['template_id' => $ templateId、 'mobiles' => $ mobiles、 'content' = $ content]);
    }
    ログイン後にコピー
  4. キューワーカー:キューワーカーは、 sms_queueキューからタスクを取得し、SMS送信を実行し、エラーログを処理します。

     //キューワーカー(例)
    while(true){
        $ task = $ redis-> rpop( 'sms_queue');
        if($ task){
            $ data = json_decode($ task、true);
            $ result = $ this-> sendsms($ data ['template_id']、$ data ['mobiles']、$ data ['content']);
            if($ result!== true){
                // log error_log( "sms send failed:"。$ result);
            }
        }
        睡眠(1); //過度のCPU使用を避ける}
    ログイン後にコピー
  5. SMS Send Function( sendSms :この関数は、SMSサービスプロバイダーAPIを呼び出してSMSメッセージを送信します。

上記の手順を通じて、フロントエンドユーザーエクスペリエンスは影響を受けず、バックエンドはSMSの送信を効率的に処理します。適切なキューシステム(Redis、RabbitMQ、BeanStalkdなど)を選択することが重要であり、タスクが確実に処理され、分散環境をサポートすることが保証されます。さらに、完全なエラー処理とロギングメカニズムも不可欠です。

以上がユーザーエクスペリエンスに影響を与えることなく、前景でSMSメッセージをバックグラウンド非同期バッチ送信する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

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)

Redisキャッシュソリューションを使用して、製品ランキングリストの要件を効率的に実現する方法は? Redisキャッシュソリューションを使用して、製品ランキングリストの要件を効率的に実現する方法は? Apr 19, 2025 pm 11:36 PM

Redisキャッシュソリューションは、製品ランキングリストの要件をどのように実現しますか?開発プロセス中に、多くの場合、ランキングの要件に対処する必要があります。

DICR/YII2-GOOGLEを使用して、Yii2にGoogle APIを統合します DICR/YII2-GOOGLEを使用して、Yii2にGoogle APIを統合します Apr 18, 2025 am 11:54 AM

vProcesserazrabotkiveb-Enclosed、する、するまみ、するまで。 leavallysumballancefriablancefaumdoptomatification、čtokazalovnetakprosto、kakaožidal.posenesko

laravel8最適化ポイント laravel8最適化ポイント Apr 18, 2025 pm 12:24 PM

Laravel 8は、パフォーマンスの最適化のための次のオプションを提供します。キャッシュ構成:Redisを使用してドライバー、キャッシュファサード、キャッシュビュー、ページスニペットをキャッシュします。データベースの最適化:インデックスを確立し、クエリスコープを使用し、雄弁な関係を使用します。 JavaScriptおよびCSS最適化:バージョン制御を使用し、アセットをマージおよび縮小し、CDNを使用します。コードの最適化:Composer Installation Packageを使用し、Laravelヘルパー機能を使用し、PSR標準に従ってください。監視と分析:Laravel Scoutを使用し、望遠鏡を使用し、アプリケーションメトリックを監視します。

RedisキャッシュがSpring Bootで失敗した場合はどうすればよいですか? RedisキャッシュがSpring Bootで失敗した場合はどうすればよいですか? Apr 19, 2025 pm 08:03 PM

スプリングブートでは、Redisを使用してOAuth2Authorizationオブジェクトをキャッシュします。 Springbootアプリケーションでは、Springsecurityouth2authorizationserverを使用してください...

Redisの役割:データストレージと管理機能の調査 Redisの役割:データストレージと管理機能の調査 Apr 22, 2025 am 12:10 AM

Redisは、データストレージと管理において重要な役割を果たしており、複数のデータ構造と持続性メカニズムを通じて最新のアプリケーションの中核となっています。 1)Redisは、文字列、リスト、コレクション、注文されたコレクション、ハッシュテーブルなどのデータ構造をサポートし、キャッシュや複雑なビジネスロジックに適しています。 2)RDBとAOFの2つの持続方法を通じて、Redisは信頼できるストレージとデータの迅速な回復を保証します。

WebSocketサーバーが401を返した後、ブラウザが応答しない理由は何ですか?それを解決する方法は? WebSocketサーバーが401を返した後、ブラウザが応答しない理由は何ですか?それを解決する方法は? Apr 19, 2025 pm 02:21 PM

Websocketサーバーが401を返した後、ブラウザの反応しないメソッド。Nettyを使用してWebsocketサーバーを開発すると、トークンを確認する必要があることがよくあります。 �...

Apple携帯電話用のOUYI Exchangeアプリの公式Webサイトをダウンロードする Apple携帯電話用のOUYI Exchangeアプリの公式Webサイトをダウンロードする Apr 28, 2025 pm 06:57 PM

OUYI Exchangeアプリは、Apple携帯電話のダウンロードをサポートし、公式Webサイトにアクセスし、「Apple Mobile」オプションをクリックして、App Storeに入手してインストールし、登録またはログインして暗号通貨取引を実施します。

See all articles