2017-05-25 13 views
1

curl_errorがtrueのときにこのコードをループ(2回/ 3回)にしておきたい場合は、エラーログに入力してください。エラーを取得してログインする際にCURLコードを繰り返します。

$ch = curl_init($api_url); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post)); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); 

$response = curl_exec($ch); 

/* if there is an error show error */ 
if (curl_error($ch) && curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200) { 
    $success = false; 
    return view('frontend.user.rss', compact('project_detail_all','active_project_detail','rss_detail','success')); 
} 
curl_close($ch); 

あなたのご提案、ありがとうございます。

+0

あなたはこのカール2~3回実行したいですか?あなたはループのためのPHPを使用することができますhttps://www.w3schools.com/php/php_looping_for.asp –

+0

私はPHPでループを知っているが、私の懸念は "エラーが発生し、まだエラーファイルにログイン失敗した場合" –

答えて

2

...私はINGの多くのcurlをしないが、これは論理的な方法のように思える

$i=0; 
do{ 
    $ch = curl_init($api_url); 
     curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post)); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); 

    $response = curl_exec($ch); 

    /* if there is an error show error */ 
    if(curl_error($ch) && curl_getinfo($ch, CURLINFO_HTTP_CODE)!=200){ 
     $success=false; 
    }else{ 
     $success=true; 
     break; 
    } 
    curl_close($ch); 
    ++$i; 
}while($i<3); 

if($success){ 
    // return what you want/$response 
}else{ 
    // log the failure, return what you want 
    // return view('frontend.user.rss', compact('project_detail_all','active_project_detail','rss_detail','success')); 
} 
+0

@ wasimbeg何これは '$ success = true'をとるとすぐにループを壊します。最初の反復が '$ success = false'であれば、最大2回ループします。 '$ success'が3回の試行の後でもfalseのままであれば、ループを終了し、エラーを1回記録することができます。これがあなたが望むものでない場合は、質問の編集に関するコメントを明記してください。 – mickmackusa

+0

ありがとうミック、これはまさに私が欲しいものです! –

関連する問題