亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP 重復curl 請求直到收到httpcode 200

PHP 重復curl 請求直到收到httpcode 200

PHP
BIG陽 2023-08-26 19:03:32
我有一個簡單的 PHP 卷曲請求,如下所示:$request = curl_init('https://some/path/');curl_setopt($request, CURLOPT_RETURNTRANSFER, true);curl_setopt($request, CURLOPT_HTTPHEADER, array('Content-Type:application/json','Authorization:'.$token));$response = curl_exec($request);$errors = curl_error($request);$httpcode = curl_getinfo($request, CURLINFO_HTTP_CODE);curl_close($request);如果我調用的 url 仍在準備數據,則返回 202;如果準備好,則返回 200。如何構建邏輯來重復請求,直到收到 200 響應。
查看完整描述

3 回答

?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

供將來參考,而不是無限循環垃圾郵件發送我使用過的請求sleep和break,因此它將每 10 秒嘗試一次,最多 1 分鐘,如下所示:


for($i=0; $i<6; $i++){

    $request = curl_init('https://some/path/');

    curl_setopt($request, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($request, CURLOPT_HTTPHEADER, array('Content-Type:application/json','Authorization:'.$token));

    

    $response = curl_exec($request);

    $errors = curl_error($request);

    $httpcode = curl_getinfo($request, CURLINFO_HTTP_CODE);

    curl_close($request);

    

    if($httpcode == 200){

        var_dump($response);

        break;

    }

    sleep(10);

}


查看完整回答
反對 回復 2023-08-26
?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

你可以使用類似的東西


$processCompleted = false;

$interval = 2; //seconds

$request = curl_init('http://www.example.com/');

curl_setopt($request, CURLOPT_RETURNTRANSFER, true);

curl_setopt($request, CURLOPT_HTTPHEADER, array('Content-Type:application/json','Authorization:'.$token));


while(!$processCompleted) {

    

    $response = curl_exec($request);

    // Check HTTP status code

    if (!curl_errno($response)) {

        switch ($http_code = curl_getinfo($request , CURLINFO_HTTP_CODE)) {

        case 200:  # OK

            ...//do your stuff

            break;

        default:

            sleep($interval);

        }

    }

}

curl_close($ch);


查看完整回答
反對 回復 2023-08-26
?
holdtom

TA貢獻1805條經驗 獲得超10個贊

do{

    $response = curl_exec($request);

    $httpcode = curl_getinfo($request, CURLINFO_HTTP_CODE);

}while($httpcode !== 200);

請注意,如果沒有 sleep(),它會盡可能快地詢問 url,“完成了嗎?完成了嗎?完成了嗎?” 一遍又一遍,如果你想在答案不是 200 時睡覺,也許可以嘗試


for(;;){

    $response = curl_exec($request);

    $httpcode = curl_getinfo($request, CURLINFO_HTTP_CODE);

    if($httpcode===200){break;}

    sleep(1);

}


查看完整回答
反對 回復 2023-08-26
  • 3 回答
  • 0 關注
  • 336 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號