Intereting Posts
Symfony на виртуальном хосте (проблема с корневым документом) Подключить автономный скрипт к joomla DB с помощью фреймворка Как использовать дату Twig для показа недельного дня в китайском тексте? Генерация покрытия кода PHPUnit, вызывающая изнурение памяти PHP и MYSQL: Query возвращает значение null в столбце со значениями Laravel для получения значений db из идентификатора сеанса Как разобрать текст с ключом по столбцу с возможными многострочными строками Печать всех элементов строки в виде дерева в PHP Реальный код в динамическом программировании с такими проблемами, как рюкзак в PHP Как заменить ereg? Использовать учетную запись службы, чтобы проверить Google InAppPurchase Как различить пустую строку с нулевым размером в DOMDocument? Может ли PHP указать, является ли сервер os 64-битным? вставить массив в таблицу, используя для цикла open_basedir ограничение в действии ошибка в php-коде

Обработка элементов в очереди SQS с помощью php-скрипта

Вот моя ситуация:

У меня есть скрипт, который получает необработанные данные, сохраняет его в базе данных, получает идентификатор элемента, а затем отправляет его в очередь азатонов SQS.

У меня есть другой скрипт (написанный на PHP), который извлекает необработанные данные из db и обрабатывает его. (обычно требуется несколько минут.

Недостающая часть – это способ получения сообщений из SQS для обработки. Частота новых данных для обработки варьируется, она может переходить от нескольких предметов в час к десяткам предметов в минуту.

Одним из способов было бы иметь задание cron, которое запрашивает SQS для новых сообщений и запускает скрипт обработки (он должен быть многопоточным и написанным чем-то другим, кроме php. Возможно, Python или Ruby). Проблема с cron заключается в том, что он довольно неэффективен, в фазах высокой нагрузки он будет перегружен и в спокойных фазах он будет делать бесполезные вызовы.

То, что я хотел бы иметь, – это какой-то многопоточный прослушиватель, который будет получать сообщения и обрабатывать их. Одно из важных требований заключается в том, чтобы необработанные данные обрабатывались своевременно, через пару минут после получения не более.

Любые мысли о лучшем решении? Соответствует ли SQS задаче? Каков наиболее эффективный способ прослушивания и обработки очереди?