nastya97core
@nastya97core
Начинающий программист

Как поместить два get запроса в одну функцию с ожиданием разных ответов?

Так всё легко начиналось, а сейчас я уже не хочу помещать два GET запроса в одну функцию, но теперь у меня уже дело принципа. Если бы я знала, что я просижу над этой строчкой 6 часов - я бы сразу плюнула и сделала две отдельные функции.

Есть GET запрос сервер. Точнее их два: первый запрос возвращает ID, второй запрос по полученному ID возвращает данные. Проблема в том, что результаты запросов имеют несколько видов:
у первого запроса: id и error (если id не получен)
у второго запроса: 0 - (ошибка), 1 - (успешно), 2 - (данные подготавливаются, сделайте запрос позже)

function curl($method, $request) {
$a = 1;

do {
echo "---запуск---";
$ch = curl_init("https://server/$method/$request");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = json_decode(curl_exec($ch));

print_r($result);
$status = $result->status;
$id = $result->id;

if ($a > 3) break 1; // если более трёх запросов, то останавливаем цикл
sleep(3); $a = $a+1;

}while ($method == "first" ? $status != 1 : !$id);

curl_close($ch);
return $result;
}
echo "Первый запуск";
$resultCurl = curl("first", $data);
echo "Второй запуск";
$resultCurl2 = curl("second", $resultCurl->id);


Вся проблема в строчке:
}while ($method == "first" ? $status != 1: !$id);
Мне нужно, чтобы в первом запросе цикл повторялся, пока я не получу id, а во втором случае: пока Status не будет равен 1...

Как блин такое сделать?

Я специально делаю ошибку, чтобы результат не смог обработаться, но почему-то я вижу:
Первый запуск
---запуск---
---запуск---
---запуск---
---запуск---
Второй запуск
---запуск---


Хотя я должна после второго запуска видеть снова 4 раза "---запуск---"
  • Вопрос задан
  • 269 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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