Как реализовать обмен данными между двумя сайтами через POST-запрос?

Стоит задача передать данные с одного сайта на другой. Язык php. Данные необходимо передавать POST-запросом. Отправка данных инициируется нажатием кнопки Т.е. необходимо послать запрос и получить ответ. Проблема в следующем: необходимо принять ответ после отправки запроса и обработать ответ. В ответе содержится либо информация о том, что даyные на той стороне приняты успешно, либо информация о том, что ответ не принят, т.е. ошибка. В этом случае с истечением какого-то временного интервала (например, через час) необходимо послать повторный запрос. И делать это необходимо до тех пор пока не будет получен ответ, что данные приняты.
Отправка POST-запроса и получение ответа - не проблема, это реализовали. Но каким образом инициировать запуск скрипта на повторную отправку запроса? Ведь изначально срабатывание скрипта, посылающего запрос, инициируется нажатием кнопки админом.
  • Вопрос задан
  • 5065 просмотров
Пригласить эксперта
Ответы на вопрос 3
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
rabbitmq/zmq, добавляете запрос в очередь, в случае ошибки, добавляете снова... ну и так пока все не отработает.
Ответ написан
ivankomolin
@ivankomolin
Самое простое в вашем случае это зациклить отправку запроса до тех пор пока не получите "нужный" ответ. Для паузы между запросами в php есть функция sleep().
Но все таки советую присмотреться к кролику.
Ответ написан
Комментировать
greabock
@greabock
Могу
Если посещаемость на сайте приличная, и четкое время отправки запроса не принципиально, можно попробовать псевдо-крон конструкции. При каждом посещении любой страницы вызывается скрипт. Если запрос уже был отправлен и принят ранее (булево значение может хранится в файле или базе - по вкусу), то скрипт ничего не делает exit(). Иначе отправляет запрос и принимает ответ. Если ответ говорит об успехе, то записывается булево значение (как я уже сказал, в базу или файл).
Если необходимо отправлять запрос не чаще чем один раз в час, то можно добавить проверку по времени последнего запроса - это еще одно значение в базе/файле.
Другие варианты, как уже писали выше, это крон или демон. Однако у Вас может не быть доступа к шелл, и в этом случае крон в пролёте. А вариант с демоном не очень стабилен в реализации. Демон уже запущен? Или его стоит запустить? Или он запущен, но глюканул/повис?
Кроме того можно использовать пинг-понг псевдо-крон. Об этом методе можно почитать здесь. Удачи!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы