2016-07-21 3 views
1

Я разрабатываю веб-приложение, используя Symfony 2.8. Мне нужно использовать Pingdom API для получения информации о некоторых веб-сайтах, которые контролируются Pingdom.Как выполнять повторные запросы API каждый раз в определенное время?

Я смог выполнить запрос на получение чеков определенного веб-сайта, используя ключ приложения и т. Д., Но мне нужно создать приложение реального времени, то есть мое веб-приложение должно постоянно выполнять запросы, используя API для получения новых значений для этих проверок.

Я думал, какие технологии лучше подходят для этой цели, но, честно говоря, после некоторых исследований я до сих пор не знаю, что использовать.

Я думал, что могу использовать веб-сайты напрямую, но, насколько я понял, веб-узлы «слушают» события, и в этом случае нет события (правильно?), То есть это должен быть «опрос» система».

Я просмотрел pusher, но это только кажется оберткой вокруг веб-сайтов.

Примечание:

  1. Я в курсе webhooks в Pingdom, но и использовать их, они должны знать свой IP-адрес (насколько я понял, как webhook работы), но Конечно, я также хочу работать на местном уровне, и, таким образом, система «опроса» вместо «толкающей системы» - это путь.

  2. У меня уже есть контроллер, который выполняет запросы API, и единственное, что я должен сделать, это делать запросы к этому контроллеру (с клиентской стороны ...), но я не уверен так как я никогда этого не делал.

  3. Пожалуйста, только люди, которые имеют опыт работы с объектом, то есть с использованием API-интерфейсов и создания таких приложений реального времени, где API-интерфейсы сторонних поставщиков являются провайдерами.

  4. Я знаю об этом факте я мог бы использовать как setTimeout и сделать XmlHttpRequest в мой контроллер, но, опять же, я действительно не знаю, если это «стандартный» способ сделать это.

  5. Я бы предпочел правильные инструменты вместо сырых, но на всякий случай, если первые хорошо ухаживают и работают хорошо.

  6. Метод не обязательно должен ограничиваться этой конкретной ситуацией, действительно, это действительно должен быть метод всякий раз, когда возникает потребность в повторных запросах с использованием любого API.

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

ответ

2

Возможно, вы напишите console command, выполнив то же самое, что и ваш контроллер, чтобы его можно было вызвать из консоли.

Затем, если вы на распространении Linux, вы можете использовать crontab для вызова консольной команды регулярно, как часто, как вы хотите

Если вы на окнах, вы можете использовать planified задачу

Специальной рекомендации : если вам нужно оставить свой контроллер в стороне от команды, вы можете подумать о написании логики, вызывающей API, в службе, чтобы разложить ваш код.

Надеется, что это помогает

+0

Могут быть, я не ясно, но как я могу обновить клиент на стороне приложение (веб-страница), используя этот метод? – nbro

+0

Команда консоли symfony имеет доступ к контейнеру службы, поэтому в основном вы можете делать все, что хотите, т.е. вставлять данные в свой DB –

+0

. Дело в том, что это веб-приложение клиент-сервер, я полагаю, что процесс неоднократно запрашивая обновления, должен выполняться на стороне клиента, потому что серверу не известно, кому он должен вернуть страницу, поэтому, возможно, моя проблема - это вопрос «setInterval» или «setTimeout» (с JS), но я не уверен, что это хорошая идея ... – nbro

Смежные вопросы