使用递归函数获取500内部错误

时间:2015-03-16 18:45:58

标签: php recursion

在调用下面的递归函数时,我发现了内部错误 下面的函数是在矩阵表中检查引用id(一种类型的父id),如果在矩阵表中可用的引用id,则执行应该结束并返回该id,但如果在矩阵表中没有找到id,则再次获取引用id(enroller_id)来自那个旧引用ID的成员表(存储在$ ref_id中)并再次调用该函数,并且它继续调用,直到它获得特定的id在矩阵中是否可用,如果它不是,则在最后然后发现它将返回默认ID($ default_ref_id)。

但是我不知道为什么我在那里收到内部服务器错误我也试过将max_execution_time 30增加到50或100但是无法修复它。

如果你可以帮我解决这个问题,那将是很好的,因为从最近3到4个小时以来我一直坚持这个问题。

以下是我在那里创建的功能:

function findReferralMember($ref_id)
{

  $default_ref_id=1;

  $count_ref_member = GetSingleValue("matrix","Count(*)","member_id='".$ref_id."'");


 if($count_ref_member > 0)
 {
    return $ref_id;
 }
 else
 {
    $ref_id = GetSingleValue("members","enroller_id","member_id='".$ref_id."'");

    findReferralMember($ref_id);
 }

 return $default_ref_id;

}

1 个答案:

答案 0 :(得分:0)

您的代码无限循环。

对函数findReferralMember的每次调用都会再次调用findReferralMember$count_ref_member变量永远不会大于零。这个无限循环永远不会返回,最终会耗尽服务器上的堆栈。这就是返回500错误消息的原因。

跟踪代码并了解为什么会出现这种无限循环。修复无限循环,500错误将消失。