У меня есть приложение php, которое получает запросы на номера деталей с нашего сервера. В этот момент мы обращаемся к стороннему API для сбора информации о ценах, чтобы убедиться, что у нас есть последние цены для этого конкретного запроса. Иногда сторонний API работает медленно или может быть недоступен, поэтому у нас есть база данных, в которой хранятся последние запросы цен для каждого конкретного номера детали, которые мы можем использовать в качестве запасного варианта. Я хотел бы запустить запрос к стороннему API и базе данных параллельно с помощью Gearman. Вот идея:
- Получить запрос
- Through gearman, create two jobs:
- Request to third party API
- Поиск в базе данных MySQL
- Wait in a loop and return the results based on the following conditions:
- If the third party API has completed return that result, return that result immediately
- Если истекло время (например, 2 секунды), а сторонний API не ответил, верните данные поиска MySQL.
Используя gearman, я думал либо запустить две задачи на переднем плане и выйти из runTasks() в вызове setCompleteCallback(), либо запустить их в фоновом режиме и проверить две задачи в отдельном цикле и проверить в задачах с помощью jobStatus().
К сожалению, я не могу заставить ни один из маршрутов работать на меня, сохраняя при этом доступ к результирующим данным. Есть ли лучший способ или есть какие-то существующие примеры того, как кто-то сделал эту работу?