@merelyJunior

Как повторно отправить curl при неудаче?

Формируется JSON и аяксом отправляется через следующий код.
Что нужно: если $token неправильный (истекла сессия), повторно отправить запрос.
С вероятностью 99% написана чушь, помогите написать или дайте рабочий пример.

<?php
    function send_message(){
        session_start(); 
        $token = $_SESSION['access'];
        $json = file_get_contents('php://input');
        $url = "https://";
        $postdata = json_encode(array('access'=>$token,"data" => json_decode($json)));
        $ch = curl_init($url); 
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
        $result = curl_exec($ch);
        curl_close($ch);
    }
    $res = send_message();
    if( $res == "error") {
    $res = send_message();
    }
   
?>
  • Вопрос задан
  • 187 просмотров
Пригласить эксперта
Ответы на вопрос 3
zkrvndm
@zkrvndm
Архитектор решений
Используйте цикл do while, чтобы бесконечно отправлять запросы, в условиях цикла пропишите, чтобы цикл повторялся до тех пор, пока не получен нужный ответ.
Ответ написан
Комментировать
Попробуй вместо curl использовать Guzzle - проще будет. (можно даже автоматически ретраи настроить https://github.com/caseyamcl/guzzle_retry_middleware)
А вообще просто в цикле проверяй статус и отправляй повторно (ну или рекурсией, как ты написал)
Ответ написан
Комментировать
@nevesomostjke
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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