11

私のサイトでは、Stackoverflow のようにコメントのプッシュ通知を行いたいと考えています。Amazon SNS/SQS はこれを行うためのフレームワークを提供しているようですが、「hello world」に相当するもの以外のコードや説明をウェブ上で見つけるのに苦労しています。

AWS SNS/SQS のドキュメントを読むと、次のものが必要なようです。

論理:

  1. コメントを投稿/新しい質問への回答
  2. トピックの作成 (最初のコメント/回答のみ)
  3. メッセージを公開する
  4. トピックを購読する

コメントが投稿されるページの PHP (http://mysite.com/postCommentOrAnswer.php):

$comment=$_POST['comment']; //posted comment
require_once 'application/third_party/AWSSDKforPHP/sdk.class.php';
$sns = new AmazonSNS();

$response = $sns->create_topic('SO-like-question-12374940'); //create topic

$response = $sns->publish(
  'arn:aws:sns:us-east-1:9876543210:SO-like-question-12374940',
  $comment
);  //publish comment

$response = $sns->subscribe(
  'arn:aws:sns:us-east-1:9876543210:SO-like-question-12374940',
  'https ',
  'https://mysite.com/notificationsReceiver'
); // Subscribe to notifications

通知を受け取るページの PHP (http://mysite.com/notificationsReceiver.php):

no idea, thoughts?

明らかに、これは完全なデモンストレーションにはほど遠いものであり、おそらくいくつかの間違った関数呼び出しがありますが、誰かがこれに基づいて構築するのを手伝ってくれるのではないかと思っていました.

4

1 に答える 1

3

あなたのコメントは、あなたがSQSに夢中になっていないことを示唆しているので、私はMySQLソリューションで答えています。

メッセージが実際にキューに入れられるほど多くのトラフィックを処理しているのでない限り、単純なMySQLテーブルアプローチをお勧めします。

次のようなMySQL通知テーブルを持つサイトがあります。

CREATE TABLE `notification` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `user_id` INT(11) NOT NULL,
    `notification_type` ENUM('inline','popup') NOT NULL DEFAULT 'inline',
    `html` TEXT NOT NULL,
    `entered_date` DATETIME NOT NULL,
    `display_date` DATETIME NOT NULL,
    `show_once` TINYINT(1) NOT NULL DEFAULT '0',
    `closable` TINYINT(1) NOT NULL DEFAULT '1',
    `destroy_on_close` TINYINT(1) NOT NULL DEFAULT '1',
    PRIMARY KEY (`id`),
    INDEX `user_id` (`user_id`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM

このテーブルはページの読み込み時にチェックされ、通知データに従って適切な通知が表示されます。挿入は、Webサイトでさまざまなアクションまたはイベントが発生したときに実行されます。

私は10,000人をはるかに超えるユーザーを抱えていますが、これまでのところ、このアプローチがサイトのボトルネックであるとは証明されていません。私もすぐにそうなるとは思っていません。

于 2012-07-18T23:45:54.657 に答える