一个带重试次数的curl 函数

Posted 左闯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个带重试次数的curl 函数相关的知识,希望对你有一定的参考价值。

<?php
/**
* [curl 带重试次数]
* @param [type] $url [访问的url]
* @param [type] $post [$POST参数]
* @param integer $retries [curl重试次数]
* @return [type] [description]
*/
function curl($url, $post = null, $retries = 3,$sleep=1 ){
$curl = curl_init($url);

if(is_resource($curl) === true){
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

if(isset($post) === true){
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, (is_array($post) === true) ? http_build_query($post, "", "&"): $post);
}

$result = false;

while(($result === false) && (--$retries > 0)){
sleep($sleep); //阻塞1s
$result = curl_exec($curl);
}

curl_close($curl);
}

return $result;
}

以上是关于一个带重试次数的curl 函数的主要内容,如果未能解决你的问题,请参考以下文章

Dubbo重试次数

RabbitMQ实现重试次数方法一-SpringRetry

SpringCloud Feign 之 超时重试次数探究

Google Cloud Pub/Sub 重试次数

URL Selenium 超出了最大重试次数[重复]

Amazon SQS 如何控制重试次数