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

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

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

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

p.s. статус может быть сразу 0. Статус 2 бывает, но не всегда.


Ответы (2 шт):

Автор решения: Вадим Александру

Я бы реализовал через cron + задачи. В кроне вызываем скрипт раз в минуту. В скрипте реализовываем логику обработки задачи, Сами задачи и их статус можно хранить в бд или в самой файловой системе в формате json или вобще сериализовать весь объект и хранить. Вариантов реализации куча, но нужно учитывать, что php - не для долговременного выполнения

→ Ссылка
Автор решения: Rebellion

Почему бы не воспользоваться циклом? Если не получили данные - пробуем еще раз через несколько секунд, пока не получим то, что надо

do{
    curl(...)
    sleep(5);
} while(Статус != 0)
→ Ссылка