Php 这个递归调用可能陷入无限循环。我该怎么跳出来?

Php 这个递归调用可能陷入无限循环。我该怎么跳出来?,php,recursion,infinite-loop,Php,Recursion,Infinite Loop,因此,我通过oAuth2访问令牌访问一些数据,我希望捕获访问令牌的过期时间。当它过期时,我捕获错误代码并刷新令牌。之后,我递归调用该函数。 如果由于某种原因刷新令牌不起作用,它将无限循环。 试一试后如何跳出这个循环 函数公司列表($page){ //发送http请求 如果($obj['errors']['status']=='401'){ 身份验证::refreshToken(); 公司列表(第页); } } 使用一个全局计数器,每次刷新令牌时增加1步,并添加一个if子句,将其与您希望的刷新限制

因此,我通过oAuth2访问令牌访问一些数据,我希望捕获访问令牌的过期时间。当它过期时,我捕获错误代码并刷新令牌。之后,我递归调用该函数。 如果由于某种原因刷新令牌不起作用,它将无限循环。 试一试后如何跳出这个循环

函数公司列表($page){
//发送http请求
如果($obj['errors']['status']=='401'){
身份验证::refreshToken();
公司列表(第页);
}
}

使用一个全局计数器,每次刷新令牌时增加1步,并添加一个if子句,将其与您希望的刷新限制进行比较

例如:

$counter = 0;
function companyList($page){
    global $counter;
    //send http-request
    if($obj['errors']['status'] == '401' && $counter < 5){
        Authentication::refreshToken();
        $counter++;
        companyList($page);
    } elseif($counter >= 5){
        $counter = 0;
    }
}
$counter=0;
函数公司列表($page){
全球美元柜台;
//发送http请求
如果($obj['errors']['status']=='401'&&&$counter<5){
身份验证::refreshToken();
$counter++;
公司列表(第页);
}elseif($counter>=5){
$counter=0;
}
}

希望这对你有帮助

这是很有帮助的,但是这个函数会被多次调用,这意味着,如果令牌过期5次,该函数将不再尝试刷新令牌。哦,是的。是我的错。还有一行代码哈哈哈,我会更新我的答案。现在,当计数器达到5时,它会自动复位,并停止无限循环。这就解决了它!谢谢:)