ホームページ バックエンド開発 PHPチュートリアル PHP および MySQL でのキュー メッセージの永続化とメッセージの重複排除のアプリケーション シナリオ

PHP および MySQL でのキュー メッセージの永続化とメッセージの重複排除のアプリケーション シナリオ

Oct 15, 2023 pm 01:42 PM
メッセージの永続性 メッセージの重複排除

PHP および MySQL でのキュー メッセージの永続化とメッセージの重複排除のアプリケーション シナリオ

PHP および MySQL でのキュー メッセージの永続化とメッセージの重複排除のアプリケーション シナリオ

キューは、ソフトウェア開発で広く使用されている一般的なデータ構造であり、非同期メッセージ処理に適用されます。タスクのスケジュール設定、ログ収集、その他のシナリオ。そのうち、メッセージの永続性とメッセージの重複排除はキューの 2 つの重要な機能であり、メッセージの信頼性とデータの一貫性を確保できます。 PHP および MySQL では、キュー アプリケーションはメッセージ ミドルウェアとして Redis を使用し、キューのメタデータを保存および管理するために MySQL を使用できます。具体的な例は次のとおりです。

まず、キュー操作をサポートするように Redis と MySQL をインストールして構成する必要があります。 Redis と MySQL のインストールと構成が完了し、Redis と MySQL 拡張機能が PHP にインストールされていることを前提としています。

以下は、PHP と Redis を使用してキューを実装するコード例です。

<?php

// 链接Redis
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// 将消息插入队列
$redis->rpush('queue', 'message1');
$redis->rpush('queue', 'message2');
$redis->rpush('queue', 'message3');

// 从队列中读取消息
$message = $redis->lpop('queue');
while ($message) {
    echo $message . PHP_EOL;
    $message = $redis->lpop('queue');
}
?>
ログイン後にコピー

上記のコードでは、Redis の rpush メソッドを使用してメッセージをメッセージの末尾に挿入します。 lpop メソッドを使用してキューからメッセージを削除します。キューの先頭にあるメッセージを読み取り、キューが空になるまでループを読み取ります。

次に、MySQL を使用してメッセージの永続化と重複排除を実現する必要があります。まず、メッセージ ID や処理ステータスなどのフィールドを含む、メッセージのメタデータを保存するテーブルを作成します。

CREATE TABLE `queue` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `message` varchar(255) DEFAULT NULL,
  `status` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `message` (`message`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ログイン後にコピー

次に、メッセージを MySQL に永続化する PHP コードを記述し、挿入前に重複排除の判定を実行して、同じメッセージが繰り返し挿入されるのを防ぎます。

<?php

// 链接MySQL
$mysqli = new mysqli('localhost', 'root', 'password', 'database');

// 将消息插入队列
$message = 'message1';
$exists = $mysqli->query("SELECT * FROM queue WHERE message = '$message'");
if ($exists->num_rows == 0) {
    $mysqli->query("INSERT INTO queue (message) VALUES ('$message')");
}

// 从队列中读取消息
$result = $mysqli->query("SELECT * FROM queue WHERE status = 0");
while ($row = $result->fetch_assoc()) {
    echo $row['message'] . PHP_EOL;
    
    // 标记消息为已处理
    $id = $row['id'];
    $mysqli->query("UPDATE queue SET status = 1 WHERE id = $id");
}

// 关闭连接
$mysqli->close();
?>
ログイン後にコピー

上記のコードでは、mysqli 拡張機能を使用して MySQL データベースに接続し、クエリを通じてメッセージがキューにすでに存在するかどうかを判断します。存在しない場合、メッセージはキューに挿入されます。メッセージを読み取るときは、未処理のメッセージをクエリし、ループを通じて各メッセージを読み取り、そのステータスを処理済みとしてマークします。

要約すると、キュー メッセージの永続化とメッセージの重複排除は、開発において一般的に使用されるテクノロジであり、メッセージの信頼性とデータの一貫性を確保できます。この記事では、PHP と Redis を使用してキューを実装し、それらを MySQL と組み合わせてメッセージの永続化と重複排除を実現するコード例を紹介します。この記事がキューの適用シナリオと実装方法を理解するのに役立つことを願っています。

以上がPHP および MySQL でのキュー メッセージの永続化とメッセージの重複排除のアプリケーション シナリオの詳細内容です。詳細については、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Laravel 開発ノート: キャッシュとキューの適切な使用 Laravel 開発ノート: キャッシュとキューの適切な使用 Nov 22, 2023 am 11:46 AM

Laravel は非常に人気のある PHP 開発フレームワークであり、豊富な機能と便利な開発方法を提供し、開発者が安定した信頼性の高い Web アプリケーションを迅速に構築するのに役立ちます。 Laravel の開発プロセスにおいて、キャッシュとキューを適切に使用することは非常に重要です.この記事では、開発者がキャッシュとキューをより効果的に使用するための注意事項を紹介します。 1. キャッシュの合理的な利用 キャッシュの定義と機能 キャッシュとは、頻繁に使用するデータをメモリ上に一時的に保存し、システムの応答速度を大幅に向上させる技術です。

PHP および MySQL でのデッドレターキューと遅延キューのアプリケーション シナリオ PHP および MySQL でのデッドレターキューと遅延キューのアプリケーション シナリオ Oct 15, 2023 am 11:46 AM

PHP および MySQL におけるデッド レター キューと遅延キューのアプリケーション シナリオの紹介 インターネット アプリケーションがますます複雑になるにつれて、大量のメッセージやタスクを処理する必要性が日に日に高まっています。解決策として、キューはタスクの非同期処理を効果的に実装し、システムのスケーラビリティと安定性を向上させることができます。キュー アプリケーションでは、デッドレター キューと遅延キューという 2 つの一般的な概念があります。この記事では、PHP と MySQL におけるこれら 2 つの概念の適用シナリオを紹介し、具体的なコード例を示します。デッドレターキューの適用シナリオは次のとおりです。

C プログラムでの CLRS アルゴリズムの実装に続いて、ベクターとキューを使用して BFS を実装する C プログラムでの CLRS アルゴリズムの実装に続いて、ベクターとキューを使用して BFS を実装する Sep 06, 2023 pm 04:37 PM

CLRS の本では、BFS アルゴリズムがベクトルとキューを使用して説明されています。このアルゴリズムを実装するには C++STL を使用する必要があります。まずはアルゴリズムを見てみましょう。アルゴリズム BFS(G,s)-begin foreachvertexuinG.V-{s},do u.color:=white u.d:=infinity u.p:=NI

PHP と MySQL でキュー メッセージ フィルタリングとメッセージ ルーティングを実装する方法 PHP と MySQL でキュー メッセージ フィルタリングとメッセージ ルーティングを実装する方法 Oct 15, 2023 pm 04:55 PM

PHP および MySQL におけるメッセージ フィルタリングとメッセージ ルーティングの Queue の実装 インターネットの急速な発展に伴い、メッセージ キュー (MessageQueue) は重要な通信メカニズムとして Web 開発において重要な役割を果たしています。メッセージ キューを使用すると、デカップリング、ピーク シェービング、非同期処理などの機能を実装できます。この記事では、PHP と MySQL でメッセージ フィルタリングとメッセージ ルーティングを実装する方法を紹介し、具体的なコード例を示します。メッセージ キュー メッセージ キューは、典型的な「プロデューサー - コンシューマー」モデルです。

C++ のスタックとキュー C++ のスタックとキュー Aug 22, 2023 am 11:00 AM

C++ のスタックとキューの概要 スタックとキューは C++ で一般的に使用されるデータ構造であり、プログラムで広く使用されています。この記事では、スタックとキューの概念、使用法、適用シナリオについて詳しく紹介します。 1. スタックの概念 スタック(Stack)は線形のデータ構造であり、「先入れ後出し」の特性を持っています。スタックでは、スタックにプッシュされたデータはスタックの底部に近くなり、後でスタックにプッシュされたデータはスタックの上部に近くなります。スタックの主な操作はプッシュとポップです。プッシュはスタックにデータを追加すること、ポップはデータをスタックに追加することです

PHP および MySQL でのキュー メッセージの永続化とメッセージの重複排除のアプリケーション シナリオ PHP および MySQL でのキュー メッセージの永続化とメッセージの重複排除のアプリケーション シナリオ Oct 15, 2023 pm 01:42 PM

PHP および MySQL におけるキュー メッセージの永続化とメッセージ重複排除のアプリケーション シナリオ キューは一般的なデータ構造であり、非同期メッセージ処理、タスク スケジューリング、ログ収集、およびソフトウェア開発のその他のシナリオで広く使用されています。そのうち、メッセージの永続性とメッセージの重複排除はキューの 2 つの重要な機能であり、メッセージの信頼性とデータの一貫性を確保できます。 PHP および MySQL では、キュー アプリケーションはメッセージ ミドルウェアとして Redis を使用し、キューのメタデータを保存および管理するために MySQL を使用できます。具体的な例は次のとおりです。初め

Javaでキューを使用してスタックを実装するにはどうすればよいですか? Javaでキューを使用してスタックを実装するにはどうすればよいですか? Aug 25, 2023 pm 05:05 PM

スタックは Vector クラスのサブクラスであり、オブジェクトの後入れ先出し (LIFO) スタックを表します。スタックの先頭に追加された最後の要素 (In) が、スタックから削除される最初の要素 (Out) になる場合があります。 Queue クラスは Collection インターフェイスを拡張し、先入れ先出し (FIFO) を使用した挿入および削除操作をサポートします。次のプログラムではキューを使用してスタックを実装することもできます。例 importjava.util.*;publicclassStackFromQueueTest{ Queuequeue=newLinkedList();

PHP および MySQL でキュー メッセージの蓄積と輻輳制御を処理する方法 PHP および MySQL でキュー メッセージの蓄積と輻輳制御を処理する方法 Oct 15, 2023 am 09:24 AM

PHP および MySQL でキュー内のメッセージの蓄積と輻輳制御を処理する方法 インターネットの急速な発展に伴い、さまざまな Web サイトやアプリケーションのユーザー数が増加し続けており、サーバーの負荷容量に対する要件が高くなります。これに関連して、メッセージ キューは、同時アクセスが多い場合のメッセージの蓄積と輻輳の問題を解決するために一般的に使用されるソリューションになりました。この記事では、PHP と MySQL でメッセージの蓄積とキューの輻輳制御を処理する方法と、具体的なコード例を紹介します。 PHP では Re を使用できます

See all articles