@qqignatqq

Как продолжить выполнение скрипта только после определённого ответа с culr?

Здравствуйте.
Ситуация такая: отправляю запрос. В ответе может быть либо:
{"Статус: 2"} - Ответ подготавливается.
{"Статус: 0", "Данные"} - всё хорошо, данные сформированы.

Как сделать, чтобы скрипт продолжил выполнятся только после получения ответа? И если в ответе Статус: 2, то он опять начнёт ждать ответ.
Вариант со sleep(), который предлагает гугл, мне кажется очень странным, ведь ответ может идти и 1 секунду, а может и 10 секунд. Не угадаешь такое.

Мне это нужно, потому что нужно дальше работать с этими данными, а на деле получается так, что ответ ещё не получен, а скрипт уже выполнил второй этап (разумеется с ошибкой).

p.s. статус может быть сразу 0. Статус 2 бывает, но не всегда.
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А кроме цикла ожидания здесь ничего и не сделать. Просто в бесконечном цикле проверяете состояние, если статус 0, то покидаете цикл, если 2, то делаете задержку (sleep) и повторяете запрос.
Ответ написан
nazar-tertyshnyi
@nazar-tertyshnyi
Govnocoder
Ну, вариант со sleep действительно такой себе.
Как вариант - использовать вебхуки, если есть возможность. Либо создавать своеобразную... очередь, я не знаю. Суть в том, чтобы создать тулзу, которая будет вызываться по крону, либо по какому-либо расписанию, смотреть на задачи в очереди и выполнять запросы. Приблизительный алгоритм (очень грубый):
1) Получить все задачи из очереди
2) Очередная задача. Выполнить запрос.
3) Статус 0? Если да - к 4-му пункту. Если нет - к пункту 5
4) Убрать задачу из очереди и сделать все дела что нужно при статусе 0. Переход к пункту 5
5) Следующая задача, переход на пункт 2
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы