Push-уведомления в PHP с использованием Amazon SNS / SQS?

На моем сайте я хотел бы делать push-уведомления о комментариях, например Stackoverflow. Amazon SNS / SQS, похоже, создает основу для этого, но мне трудно найти какой-либо код / ​​объяснение в Интернете для чего-либо, кроме эквивалента «привет мир».

От чтения документации 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? 

Очевидно, что это не близок к полной демонстрации и, вероятно, имеет некоторые неправильные вызовы функций, но мне было интересно, сможет ли кто-нибудь помочь в этом?

Ваш комментарий подразумевает, что вы не привязаны к 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 

Эта таблица проверяется при загрузке страницы, и соответствующее уведомление отображается в соответствии с данными уведомления. Вставка выполняется, когда на веб-сайте происходят различные действия или события.

У меня более 10 000 пользователей, и пока этот подход не оказался узким местом для сайта. Я тоже не ожидаю этого в ближайшее время.