有没有办法在 php 中重试 curl 请求失败后,如果超时,我希望它重试大约 5 次,但我不知道该怎么做。我应该用curl_errno($ch)
它来检查它是否超时然后运行一个全新的 curl 请求,还是有更简单的方法来做到这一点?
问问题
6897 次
1 回答
4
cURL 有预定义的错误代码,您可以在此处找到它们:http ://curl.haxx.se/libcurl/c/libcurl-errors.html 我们追求的是 28,用于 CURLE_OPERATION_TIMEDOUT。它应该在 curl_errno 上以数字形式返回,因此我们可以使用 28 比较来检查超时。
我建议你循环直到你没有得到 28,你可以用 while 来做到这一点,还可以添加一个 and 来达到限制,就像这样
$limit = 0;
while((curl_errno($ch) == 28 or $limit == 0) and $limit < 5){
$limit++;
// Run curl stuff
}
你当然也应该在循环中添加你的 curl 获取。所以是的,我认为您需要再次运行 curl 命令。我还建议在 $limit++; 之后重试之前放置一个睡眠。行添加
if($limit > 0) sleep(1);
我假设这将在 CLI 上使用,所以睡眠应该不是问题。您只是不想锤击 HTTP 服务器,您可能不知道它的防火墙规则等
于 2013-07-28T02:57:04.540 回答