失敗した後にphpでcurlリクエストを再試行する方法はありますか?タイムアウトした場合は約5回再試行したいのですが、これを行う方法がわかりません。curl_errno($ch)
タイムアウトかどうかを確認してから、まったく新しいcurlリクエストを実行する必要がありますか、それとももっと簡単な方法がありますか?
6897 次
1 に答える
4
cURLには定義済みのエラー コードがあり、ここで見つけることができます 。curl_errno で数値として返される必要があるため、28 の比較を使用してタイムアウトを確認できます。
28 が得られなくなるまでループすることをお勧めします。while を使用してこれを実行し、and を追加して、次のように制限に到達することもできます。
$limit = 0;
while((curl_errno($ch) == 28 or $limit == 0) and $limit < 5){
$limit++;
// Run curl stuff
}
もちろん、curl fetch もループに追加する必要があります。はい、curl コマンドをもう一度実行する必要があると思います。また、 $limit++; の後などに再試行する前に、スリープを置くことをお勧めします。行の追加
if($limit > 0) sleep(1);
これは CLI で使用されると想定しているため、スリープは問題にならないはずです。HTTP サーバーを攻撃したくないだけで、そのファイアウォール ルールなどを知らない可能性があります。
于 2013-07-28T02:57:04.540 に答える