Как продолжить выполнение скрипта только после определённого ответа с culr?
Ситуация такая: отправляю запрос. В ответе может быть либо: {"Статус: 2"} - Ответ подготавливается. {"Статус: 0", "Данные"} - всё хорошо, данные сформированы.
Как сделать, чтобы скрипт продолжил выполнятся только после получения ответа? И если в ответе Статус: 2, то он опять начнёт ждать ответ. Вариант со sleep(), который предлагает гугл, мне кажется очень странным, ведь ответ может идти и 1 секунду, а может и 10 секунд. Не угадаешь такое.
Мне это нужно, потому что нужно дальше работать с этими данными, а на деле получается так, что ответ ещё не получен, а скрипт уже выполнил второй этап (разумеется с ошибкой).
p.s. статус может быть сразу 0. Статус 2 бывает, но не всегда.
Ответы (2 шт):
Я бы реализовал через cron + задачи. В кроне вызываем скрипт раз в минуту. В скрипте реализовываем логику обработки задачи, Сами задачи и их статус можно хранить в бд или в самой файловой системе в формате json или вобще сериализовать весь объект и хранить. Вариантов реализации куча, но нужно учитывать, что php - не для долговременного выполнения
Почему бы не воспользоваться циклом? Если не получили данные - пробуем еще раз через несколько секунд, пока не получим то, что надо
do{
curl(...)
sleep(5);
} while(Статус != 0)